1

LinearLayout があり、それに 3 つの LinearLayout を動的に追加します。各 LinearLayouts には Button が含まれています。ボタンの 1 つを押した後、2 番目のレベルの 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 のメッセージ ループに「relayout」メッセージがポストされます。これにより、カレンダーが追加された後にレイアウトの新しいサイズが計算され、画面全体に表示されます。

于 2012-06-10T23:07:39.297 に答える