动态填充预定义的相对布局

所以我有一个相对的布局,看起来像这样..

点击截图

它的代码是:

<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类似的外观

链接地址: http://www.djcxy.com/p/14837.html

上一篇: Dynamically fill the predefined Relative layout

下一篇: CONTENT not working after dynamically adding views