我有一个rl_root
包含一些视图和一个按钮的 Relativelayout,当按下按钮时,会调用一个showConfigStubView
调用方法,它是为了使布局rl_root
消失并且viewStub
应该替换这个 viewGroup rl_root
。
在运行时,当showConfigStubView
调用该方法时,viewGrouprl_root
消失并且viewStub
永远不会显示。
showConfigStubView
调用intView.gone
以使rl_root
消失,然后以Viewstub
编程方式创建一个新viewStub = new ViewStub(getActivity());
的,然后使用其参数创建一个 realtiveLayout,然后将其添加ViewStub
到新的 RelativeLayout,然后viewStub
使用其各自的布局膨胀。
请看下面的代码,这些方法showConfigStubView
解释了我如何调用ViewStub
主要布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical|center_horizontal">
<RadioGroup
android:id="@+id/rg_mqtt_config_choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:checkedButton="@+id/rb_used_configs">
<RadioButton
android:id="@+id/rb_used_configs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/rb_used_configs"/>
<RadioButton
android:id="@+id/rb_new_configs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/rb_new_configs" />
</RadioGroup>
<Button
android:id="@+id/btn_connect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@+id/rg_mqtt_config_choice"
android:text="@string/btn_connect"/>
视图存根
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal">
<TextView
android:id="@+id/tvSubView_ip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:paddingTop="10dp"
android:text="@string/tvSubView_ip"/>
<EditText
android:id="@+id/etSubView_ip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/tvSubView_ip"
android:layout_marginStart="20dp"
android:hint="@string/etSubView_ip_hint"/>
<TextView
android:id="@+id/tvSubView_port"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/tvSubView_ip"
android:paddingTop="20dp"
android:text="@string/tvSubView_port"/>
<EditText
android:id="@+id/etSubView_port"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/tvSubView_port"
android:layout_below="@+id/etSubView_ip"
android:layout_marginStart="7dp"
android:hint="@string/etSubView_port_hint"/>
<TextView
android:id="@+id/tvSubView_clientID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/tvSubView_port"
android:paddingTop="20dp"
android:text="@string/tvSubView_clientID"/>
<EditText
android:id="@+id/etSubView_clientID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/tvSubView_clientID"
android:layout_below="@+id/etSubView_port"
android:layout_marginStart="7dp"
android:hint="@string/etSubView_clientID_hint"/>
<TextView
android:id="@+id/tvSubView_KATimer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_below="@+id/tvSubView_clientID"
android:paddingTop="20dp"
android:text="@string/tvSubView_KATimer"/>
<EditText
android:id="@+id/etSubView_KATimer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/tvSubView_KATimer"
android:layout_below="@+id/etSubView_clientID"
android:layout_marginStart="7dp"
android:hint="@string/etSubView_KATimer_hint"/>
<CheckBox
android:id="@+id/cbSubView_CleanSession"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tvSubView_KATimer"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:checked="true"
android:text="@string/cbSubView_CleanSession"/>
方法 showConfigStubView:
protected void showConfigStubView() {
// TODO Auto-generated method stub
this.rl_Root.setVisibility(View.GONE);
viewStub = new ViewStub(getActivity());
RelativeLayout relativeLayout = new RelativeLayout(getActivity());
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams
((int) LayoutParams.WRAP_CONTENT, (int) LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_HORIZONTAL);
params.topMargin = 10;
viewStub.setLayoutParams(params);
//rl_Root.addView(viewStub);
viewStub.setLayoutResource(R.layout.mqttconfig_subtree);
relativeLayout.addView(viewStub);
View inflated = viewStub.inflate();
}