我有一个已经在 XML 中定义的布局。我想添加一个 ListView 来显示保存文件中的变量数据。
数据的大小不固定,现有数据可以由用户编辑,所以我不确定你是否可以将其存储在 res 中。
由于我缺乏知识,我觉得以编程方式创建布局组件更有利(listview),而其他组件最好通过 xml 文件完成。
有没有一种方法可以同时使用 xml 和 java 来创建布局?谢谢。
您实际上不需要动态创建 ListView。
您可以在 xml 文件中以静态方式定义 ListView。在您的 java 代码中,您需要将适配器附加到该 ListView 并且您的列表将自动包含与适配器中一样多的项目。
我认为您可能需要通过一些基本的 ListView 示例才能完全理解我要说的内容。
查看此链接以获取有关 ListView 的分步教程:http ://www.mkyong.com/android/android-listview-example/
由于您的问题实际上是关于向 xml 动态添加元素(您不需要这样做来实现您想要对 ListView 执行的操作。我只是为了您的知识而回答),这就是您的方式这样做:
TextView textView = new TextView(YourClass.this);
textView.setLayoutParams(....); // specify the Layout Parameters
textView.setPadding(60, 10, 0, 10);
textView.setTextAppearance(getBaseContext(), R.style.TitleTextStyle);
如果您想在任何布局中创建多个项目,请参阅以下示例代码,该代码在动态创建的 LinearLayout 中添加了一个 Image 和一个 TextView。
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(1);
ImageView iv1 = new ImageView(this);
iv1.setImageResource(R.drawable.control);
TextView txtTab1 = new TextView(this);
txtTab1.setText("BLah Blah BLAh");
txtTab1.setPadding(8, 9, 8, 9);
txtTab1.setTextColor(Color.parseColor("#8B4513"));
txtTab1.setTextSize(30);
txtTab1.setBackgroundResource(R.drawable.control);
txtTab1.setGravity(Gravity.CENTER_HORIZONTAL);
ll.addView(iv1,0);
ll.addView(txtTab1,1);
您仍然应该将 ListView 放入您的 xml 文件中。您可以通过在 java 中定义一个 Adapter 并加载您想要的任何数据来使其动态化。
将 ListView 添加到 XML 不会删除您使用动态数据填充它的能力。