0

rl_rootはいくつかのビューとボタンを含む Relativelayout を持っています。ボタンが押されると、呼び出されたメソッドshowConfigStubViewが呼び出され、レイアウトrl_rootが消えて、viewStubこの viewGroup を置き換える必要がありrl_rootます。

実行時にメソッドshowConfigStubViewが呼び出されると、viewGrouprl_rootが消え、viewStub表示されなくなります。

int は、非表示にするためのshowConfigStubView呼び出しであり、プログラムで新しいものを作成し、そのパラメーターを使用して realtiveLayout を作成し、新しい RelativeLayout に を追加してから、それぞれのレイアウトで を膨張させます。View.gonerl_rootViewstubviewStub = new ViewStub(getActivity());ViewStubviewStub

以下のコードを見てください。メソッド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();
}
4

1 に答える 1

0

viewStub は常に null 以外の ViewGroup または Layout に属する必要があることに注意してください。GoneViewStubが属する必要がある viewGroup がないため、RelativeLayout の可視性を参照することは考慮されます。次のことを試すことをお勧めします。

protected void showConfigStubView() {
    // TODO Auto-generated method stub
    this.rg_ConfigChoice.setVisibility(View.GONE);
    this.btn_connect.setVisibility(View.GONE);
    this.viewStub = new ViewStub(getActivity());
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams 
            ((int) LayoutParams.WRAP_CONTENT, (int) LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.CENTER_HORIZONTAL);
    this.viewStub.setLayoutParams(params);
    this.rl_Root.addView(viewStub);
    this.viewStub.setLayoutResource(R.layout.mqttconfig_subtree);
    View inflated = viewStub.inflate();
}
于 2015-01-13T15:21:05.827 に答える