【发布时间】:2015-03-11 13:45:46
【问题描述】:
我有一个Relativelayout rl_root,其中包含一些视图和一个按钮,当按下按钮时,调用了一个名为showConfigStubView 的方法,它使布局rl_root 消失,viewStub 应该替换它视图组rl_root.
在运行时,当调用 showConfigStubView 方法时,viewGroup rl_rootdisappears 并且 viewStub 永远不会显示。
int showConfigStubView 是调用 View.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"/>
ViewStub
<?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();
}
【问题讨论】:
标签: android android-layout layout android-relativelayout viewstub