我正在创建一个需要动态生成XML文件的应用。布局基本上是空的(除了线性布局),然后我遍历一个JSON数组并为数组中的EACH元素创建下面显示的XML代码(数组中每个元素唯一不同的是视图的ID )。
我真的不明白如何使用Java来创建这些布局,编辑它们的属性以及为它们添加视图。
我知道我可以创建一个GridLayout对象,并使用
为其提供行数和列数GridLayout doc = new GridLayout(3, 3);
但我无法弄清楚如何编辑所有特定属性,然后在布局中添加视图。
创建布局,编辑其属性以及通过Jave代码在该布局中添加视图的最佳方法是什么?
谢谢。
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="3"
android:layout_marginBottom="10dp"
android:background="#3c37ff00"
android:id="@+id/doctor1"
android:longClickable="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Dr. Sam"
android:id="@+id/doctor1_name"
android:layout_row="0"
android:layout_column="0"
android:textStyle="bold"
android:textSize="26dp"
android:typeface="sans" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/doctor1_profile"
android:layout_row="0"
android:layout_column="1"
android:src="@drawable/no_pic"
android:scaleType="fitXY"
android:layout_rowSpan="3"
android:layout_columnSpan="1"
android:layout_gravity="right"
android:background="#00ffffff" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/doctor1_action"
android:layout_row="0"
android:layout_column="2"
android:src="@drawable/abc_ic_menu_paste_mtrl_am_alpha"
android:scaleType="centerInside"
android:layout_rowSpan="3"
android:layout_columnSpan="1"
android:background="#47ffffff"
android:clickable="true"
android:onClick="setContentView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Very Close"
android:id="@+id/doctor1_distance"
android:layout_row="1"
android:layout_column="0"
android:textStyle="bold" />
</GridLayout>
答案 0 :(得分:0)
您应该从单个xml文档和父布局开始。然后你可以给它一个id并动态调用它。您可以根据需要添加到此布局。这是我做过的一些代码。我的父线性布局是my_ll:
LinearLayout ll = (LinearLayout) myInflatedView.findViewById(R.id.my_ll);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
// Use this for each image in the list
final ImageView image = new ImageView(getActivity());
image.setAdjustViewBounds(true); // Scales it to the screen
image.setId(i); // Sets each with unique id
ll.addView(image, params); // Adds the ImageView to screen BEFORE adding image (important)
Picasso.with(getActivity()) // THEN you add the image from photosList
.load(photosList.get(i))
.into(image);
您还可以动态地为每个视图添加onClickListeners。 addView是将动态添加它的部分。
答案 1 :(得分:0)
您可以通过以下方式在任何viewGroup中添加您的视图:
YourViewGroup.addView(yourChildView);
但我认为ListView
会更好地为您服务,因为:
Adapter
。 修改强>
从最新的API开始,出于各种原因,您应该使用RecyclerView
。它与以前的适配器类似,您可以完成所需的任何列表/网格行为。