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 编程:如何以网格方式以编程方式创建各种视图类型的主要内容,如果未能解决你的问题,请参考以下文章