根据用户输入设置CustomView的布局

时间:2016-04-05 18:55:34

标签: android android-layout android-custom-view

我有一个扩展RelativeLayout的自定义视图。在这个类的init(Context context,AttributeSet attrs)方法中,我通过以下方式设置布局文件:

inflate(getContext(), R.layout.in_session_view_layout, this);

我在这样的列表项中使用此自定义视图:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:verizon="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_margin="5dp">

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <ImageView
        android:id="@+id/flag"
        android:layout_width="60dp"
        android:layout_height="160dp"
        android:layout_below="@id/txt"
        android:layout_gravity="center"
        android:layout_margin="5dp" />

</FrameLayout>

    <com.widgets.FreeBeeNotificationView
        android:id="@+id/freebee_pre_session_view"
        android:layout_width="wrap_content"
        android:layout_height="35dp"
        android:layout_gravity="right|top"
        android:layout_marginBottom="6dp"
        android:layout_marginRight="6dp"
        android:layout_marginTop="6dp"
        verizon:textSize="12sp" />

</FrameLayout>

现在,要求是,需要根据用户输入动态地在自定义视图中设置此布局文件。但是,我已经调用了自定义视图的init()方法后收到用户输入,因为只要上面给出的FrameLayout被加载就会调用此方法。

如何根据用户输入动态将布局文件设置为自定义视图?有人可以帮助我。

感谢。

1 个答案:

答案 0 :(得分:1)

希望我已正确理解您的要求。如果没有,请进一步解释。 你可以这样做。

在自定义视图中创建一个名为setLayout(int layoutId)

的方法
public void setLayout(int layoutId)
{
     removeAllViews();
     LayoutInflater inflater = LayoutInflater.from(getContext());
     inflater.inflate(getContext(), layoutId, this);
}

当您有用户输入时,请致电

yourCustomView.setLayout(R.layout.new_layout);

免责声明:所有这些都来自内存而未经过测试,因此可能无法编译。