动态填充预定义的相对布局
所以我有一个相对的布局,看起来像这样..
点击截图
它的代码是:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/image"
android:scaleType="fitXY" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:background="#60000000"
android:textSize="30dp"
android:textAlignment="textEnd"
android:textColor="#ffffff" />
</RelativeLayout>
我有两件事情要做,首先动态地使用这种相对布局,并用不同的内容填充imageview和textview。
其次,我想像这样一个接一个地动态布置Relativelayout。
使用RecyclerView
你可以从中学习
http://developer.android.com/reference/android/support/v7/widget/RecyclerView.html
和
http://www.androidhive.info/2016/01/android-working-with-recycler-view/
最佳做法是使用RecyclerView
来满足这种需求。 但是,您仍然应该通过膨胀并将此布局添加到父级布局来实现此目的。
想象一下你有一个包含背景和文本的模型
public class Item {
private String text;
private int background;
public Item (String text_, int background_) {
this.text = text_;
this.background = background_;
}
public String getText() { return this.text; }
public int getBackground() { return this.background; }
}
假设您有一个该对象的ArrayList<Item>
。 你有一个父线性布局。
LinearLayout parentLayout = (LinearLayout)findViewById(R.id.parent_layout);
for (Item item: items) {
View view = getLayoutInflater(null).inflate(R.layout.your_button_layout, parentLayout, false);
TextView text= (TextView) view.findViewById(R.id.text);
ImageView background= (ImageView) view.findViewById(R.id.image);
text.setText(item.getText());
background.setBackground(item.getBackground());
parentLayout.addView(view);
}
您可以将边距和填充属性应用于您的子布局,使其具有与RecyclerView
类似的外观