我有一个扩展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被加载就会调用此方法。
如何根据用户输入动态将布局文件设置为自定义视图?有人可以帮助我。
感谢。
答案 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);
免责声明:所有这些都来自内存而未经过测试,因此可能无法编译。