2015-01-13 3 views
0

я есть RelativeLayout rl_root, который содержит некоторые виды и бутон, когда кнопка нажата метод, называемый showConfigStubView вызывается и это сделать макет rl_root исчезает и viewStub должен заменить этот ViewGroup rl_root.ViewStub не отображается?

При запуске ime, когда вызывается метод showConfigStubView, viewGroup rl_root исчезает, а viewStub не отображается.

ИНТ на 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(); 
} 

ответ

0

Обратите внимание, что, viewStub всегда должны принадлежать к ненулевым ViewGroup или Layout. что ваша видимость RelativeLayout до Gone считается, поскольку нет viewGroup, к которой должен принадлежать ваш viewStub. Я предлагаю попробовать следующее:

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(); 
} 
Смежные вопросы