我的 UI 中有许多垂直堆叠的面板。每个面板都包含一个 ListView。根据用户交互,ListView 中的项目数得到更新。
我的问题是,如果我增加 ListView 中显示的项目数量,包含面板将不会展开以显示它们。相反,我的 ListView 只是被淡化为黑色而被切断。我正在以编程方式创建这些堆叠面板中的每一个 - 这是创建函数的主体:
LinearLayout containingPanel = new LinearLayout(TestActivity.this);
containingPanel.setOrientation(LinearLayout.VERTICAL);
// create title
TextView titleText = new TextView(TestActivity.this);
titleText.setText("a title");
titleText.setGravity(Gravity.CENTER);
titleText.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
// create dynamic list view of costs
ListView dynamicContentListView = new ListView(TestActivity.this);
dynamicContentListView.setAdapter(new MyDynamicAdapter());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
params.weight = 1;
dynamicContentListView.setLayoutParams(params);
// build up GUI
containingPanel.addView(titleText);
containingPanel.addView(dynamicContentListView);
return containingPanel;
我认为在 ListView 上设置权重应该足够了,但事实并非如此。所有 GUI 更新工作正常 - 新项目会自动添加到支持适配器的数据中,并且 ListView 会正确更新自身。但是在我添加了三四个新项目之后,containingPanel 拒绝自我更新,并且新项目被混合掉了。