【问题标题】:How to add multiple checkboxes to LinearLayout for Android programatically?如何以编程方式将多个复选框添加到 LinearLayout for Android?
【发布时间】:2015-05-23 19:26:07
【问题描述】:

我在我的 XML 中定义了一个 ScrollView,我有一个垂直的 LinearLayout(代码中引用为 ll 或 ID pickmovieLL 的那个)

我想在垂直LinearLayout ll下添加Horizo​​ntal LinearLayouts

我通过一个流派列表的 for 循环来做到这一点(使用它来获取复选框的文本),基本上我想在换行之前从左到右添加两个复选框(我找到了外观每行只有 1 个,看起来有点奇怪)

LinearLayout ll = (LinearLayout) findViewById(R.id.pickmovieLL);
            LinearLayout ll2;
            CheckBox ch;
            CheckBox ch2;
            for (int i = 0; i < genres.size(); i++)
            {

                if (genres.get(i) != null)
                {

                    ll2 = new LinearLayout(this);
                    ll2.setOrientation(LinearLayout.HORIZONTAL);
                    ll2.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                    ll2.setGravity(Gravity.CENTER);
                    ll2.setWeightSum(1);
                    ch = new CheckBox(this);
                    ch.setLayoutParams((new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1)));
                    ch.setText(genres.get(i).genreName);
                    ch.setId(genres.get(i).getGenreID());
                    ll2.addView(ch);

                }

                if (genres.size() - i > 1)
                {

                    ch2 = new CheckBox(this);
                    ch2.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1));

                    ch2.setText(genres.get(i + 1).genreName);
                    ch2.setId(genres.get(i + 1).getGenreID());
                    ll2.addView(ch2);
                    i++;

                }

                ll.addView(ll2);

            }

我遇到的一个问题是列表中的 5 种类型中只有三种出现。名单是奇幻、科幻、喜剧、戏剧和动作……只有科幻、戏剧和动作出现。 (我以前遇到过列表超出范围的问题,因此我为什么要像这样增加 for 循环。),一遍又一遍地检查它,无法找出问题所在,使用了层次结构查看器,它只是显示它已添加到正确的 LinearLayout 中,但只添加了一个,我不知道为什么从未添加第一个类型,但 Action 是在 ch Checkbox 下(我感觉有些东西可能会覆盖某些东西,但不确定为什么会这样)。

已经查看了很多其他帖子来解决这个问题,我猜这个问题可能是由于想要一次添加两个复选框造成的。

【问题讨论】:

  • 您是否考虑过使用GridView?这是动态创建可滚动的多列布局的更好方法..
  • 我确实看过你说的......无法弄清楚如何转换我必须使用 GridView 的内容,如果这样做,我会收到一些适配器错误(AdapterView 不支持 addView(View)或其他东西),虽然可能是因为我使用的是滚动视图,我想我看到某处说gridview已经滚动了?也尝试过 GridLayout,但显然它不容易支持填充屏幕,所以它都在左上角
  • 是的 GridView 需要更多的改变,这是一种不同的方法——我会说一种更干净的方法
  • 谢谢,我决定使用我现在拥有的东西,我可能会考虑将其更改为,但首先想要一些功能性的东西,以后可以清理它,让它与什么一起工作我不得不这样做

标签: android android-layout checkbox android-linearlayout


【解决方案1】:

好吧,您只需要在 setParameter 中为复选框 Width 设置 WRAP_CONTENT,这是您出错的第一个参数,如果您在 Horizo​​ntal LinearLayout 中为组件分配 MATCH_PARENT 宽度,那么它不会为其他组件腾出空间。

【讨论】:

  • 谢谢,这似乎有所帮助,已将其标记为已解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多