1

我有一个 LinearLayout 并动态添加三个 LinearLayouts 到它。每个 LinearLayout 都包含一个 Button。按下其中一个按钮后,我想在二级 LinearLayout 中显示 CalendarView。视图已显示,但未完全显示。我附上了一个截图来可视化这个问题:http: //i.stack.imgur.com/CE9je.png

这是添加布局的代码:

LinearLayout.LayoutParams pLayouts = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT,
        LinearLayout.LayoutParams.WRAP_CONTENT
);
hllCalendar = new LinearLayout(this);
hllCalendar.setLayoutParams(pLayouts);
hllCalendar.setId(hllCalendarID);
hllCalendar.setOrientation(LinearLayout.VERTICAL);
btCalendar = {some other code}
hllCalendar.addView(btCalendar);
hllComponents.addView(hllCalendar);

这是添加 CalendarView 的代码:

LinearLayout.LayoutParams pCalendar = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.MATCH_PARENT,
        LinearLayout.LayoutParams.WRAP_CONTENT
);
CalendarView cal = new CalendarView(this);
cal.setLayoutParams(pCalendar);
cal.setOnDateChangeListener(this);
hllCalendar.addView(cal);

关于如何使日历完全可见的任何建议?

为方便起见,这是动态创建的布局:

hllComponents pLayouts
-hllCalendar pLayouts
--btCalendar
--CalendarView pCalendar
-hllStartTime pLayouts
--btStartTime
-hllEndTime pLayouts
--btEndTime

问题与这篇文章中的相同。

4

1 回答 1

0

尝试调用父布局的 requestLayout()。

这将在 UI 的消息循环上发布“重新布局”消息。这将在添加日历后计算布局的新大小,从而将其完全绘制在屏幕上。

于 2012-06-10T23:07:39.297 回答