Android 编程:如何以网格方式以编程方式创建各种视图类型

Posted

技术标签:

【中文标题】Android 编程:如何以网格方式以编程方式创建各种视图类型【英文标题】:Android programming : how to programmatically create various view types in a grid fashion 【发布时间】:2013-04-24 14:33:28 【问题描述】:

我不确定如何准确地问这个问题,但我会试一试。

这就是我想要在一个 Activity 中做的事情。

构建一个网格,其中包含 [x] 行,每行 3 列,包含此内容

[一个 TextView(包含一个名称)] [一个 Spinner(包含一个状态列表)] [一个 EditText]

如何开始?我可以通过编程方式创建的视图,这不是问题,我什至将它们存储在 3 个数组列表中以供以后方便参考,但我不知道如何正确操作。

我应该使用例如创建一个 xml 布局吗? (和伪代码)

LinearLayout (horizontal) 
   TextView ...
   Spinner ...
   EditText ...
/LinearLayout

并尝试在我用来创建每一行的循环中对其进行膨胀,并以标准方式设置每个视图的 id(例如 viewName[x] 其中 x 是我的 for 中的当前“i”,但它是有什么用吗?),例如我们对 ExpendableList 适配器的组/子项所做的那样?

或者有没有办法实际使用 GridView/GridLayout 来做到这一点(在这种情况下,在我的 Activity 中,我如何将每个特定创建的 View 放入正确的 GridView/GridLayout 中)?

还是我完全不怀疑的另一种方式?

提前致谢

【问题讨论】:

观看此视频的前 13 分钟。它很好地展示了适配器:youtube.com/watch?v=N6YdwzAvwOA(他说的都是 ListView,但 GridView 是一样的。 你能发布你的代码吗?您想以编程方式添加视图吗? 【参考方案1】:

如果您想以编程方式添加视图,只需创建一个包含 3 个线性布局(水平)的 layout.xml。还将 id 分配给那些 LinearLayouts。然后在你的 java 代码中,找到视图并在那些 LinearLayouts 上调用 addView()。

例子:

LinearLayout ll_1 = (LinearLayout)findViewById(R.id.linearlayout1);
LinearLayout ll_2 = (LinearLayout)findViewById(R.id.linearlayout2);
LinearLayout ll_3 = (LinearLayout)findViewById(R.id.linearlayout3);

...

ll_1.addView(new TextView(this));
ll_1.addView(new Spinner(this));
ll_1.addView(new EditText(this));
...

详细地说,例如,如果我想以编程方式将微调器添加到 LinearLayout,那么,

你需要得到布局

LinearLayout linearLayout =  findViewById(R.id.layoutID);

如下创建微调器:

   Spinner spinner = new Spinner(this);

spinner .setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));

                ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this,
                        android.R.layout.simple_spinner_dropdown_item, spinnerList);
                spinner.setAdapter(spinnerArrayAdapter);

然后添加微调器来查看

linearLayout.addView(spinner);

【讨论】:

谢谢,这是一个很好的起点。为了构建这个“行”列表,我仍然需要解决我的布局协同工作的方式,但它正在向前发展;)

以上是关于Android 编程:如何以网格方式以编程方式创建各种视图类型的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式创建 dojo 数据网格“抱歉发生错误”

以编程方式创建网格视图

如何以编程方式创建 android 形状背景?

如何以编程方式创建多个按钮和操作?

在android中以编程方式创建视图时如何传递AttributeSet

如何在 Android 中以编程方式创建 TabLayout