【问题标题】:Hide and show layout based on conditions in Android在Android中根据条件隐藏和显示布局
【发布时间】:2013-09-03 21:50:40
【问题描述】:

我是 Android 新手。我想根据 if else 条件隐藏和显示 Linearlayout。在我的应用程序中,我使用了 1 个微调器。根据选定的微调器值,我希望我的下一个布局隐藏或可见,但如果它一旦消失,它将不再可见。

我的代码是:

    public class Expense extends Activity{
    Spinner datype;

    public void onCreate(Bundle b){
    super.onCreate(b);
    setContentView(R.layout.expense);
    mainlayout=(LinearLayout)this.findViewById(R.id.layout1);
    datype=(Spinner)findViewById(R.id.da_type);
    List<String>data1=new ArrayList<String>();
    data1.add("Local");
    data1.add("Ex-Station Double Side");
    data1.add("Ex-Station Single Side");
    data1.add("Out-Station Double Side");
    data1.add("Out-Station Single Side");
    ArrayAdapter<String>adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,data1);
    adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
    datype.setAdapter(adapter);
    if(datype.getSelectedItem().toString().equals("Local")){

        mainlayout.setVisibility(LinearLayout.GONE);
    }
    else 
        mainlayout.setVisibility(LinearLayout.VISIBLE);


}

}

【问题讨论】:

  • 它不起作用.....在我的微调器中,第一个值默认设置为“本地”。所以布局是不可见的。但是当我从微调器中选择一些其他值时。布局没有出现在视图中...这就是问题...

标签: android android-linearlayout visibility


【解决方案1】:

代替线性layout.gone试试View.GONE

【讨论】:

    【解决方案2】:

    你可以用这个

    改为

    mainlayout.setVisibility(LinearLayout.GONE);
    

    mainlayout.setVisibility(View.GONE);
    

    您必须在 Spinner 的点击事件后隐藏和显示您的代码,只需此 OnItemSelectedListener 方法..

    【讨论】:

    • 它不起作用.....在我的微调器中,第一个值默认设置为“本地”。所以布局是不可见的。但是当我从微调器中选择一些其他值时。布局没有出现在视图中......这就是问题
    【解决方案3】:

    您需要设置OnItemSelectedListener 并在那里更改您的布局。这是您的活动实现OnItemSelectedListener 的示例。

    public class Expense extends Activity implements OnItemSelectedListener {
    
    private Spinner datype;
    private LinearLayout mainlayout;
    
    public void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.expense);
        mainlayout=(LinearLayout)this.findViewById(R.id.layout1);
        datype=(Spinner)findViewById(R.id.da_type);
        List<String>data1=new ArrayList<String>();
        data1.add("Local");
        data1.add("Ex-Station Double Side");
        data1.add("Ex-Station Single Side");
        data1.add("Out-Station Double Side");
        data1.add("Out-Station Single Side");
        ArrayAdapter<String>adapter=new ArrayAdapter<String (this,android.R.layout.simple_spinner_item,data1);
        adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
        datype.setAdapter(adapter);
        if(datype.getSelectedItem().toString().equals("Local")){
            mainlayout.setVisibility(LinearLayout.GONE);
        }
        else {
            mainlayout.setVisibility(LinearLayout.VISIBLE);
        } 
    
        // here we set the listener
        datatype.setOnItemSelectedListener(this);
    }
    
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        // here we change layout visibility again
        if(datype.getSelectedItem().toString().equals("Local")){
            mainlayout.setVisibility(LinearLayout.GONE);
        }
        else {
            mainlayout.setVisibility(LinearLayout.VISIBLE);
        } 
    }
    
    public void onNothingSelected(AdapterView<?> parent) {
    }
    }
    

    【讨论】:

    • 如果你在 onItemSelected() 中放了一个断点并检查它。 datype.getSelectedItem() 的值是多少?
    【解决方案4】:

    还有加

    android:visibility="visible"

    在你的主布局xml中。 那就用这个

    ma​​inlayout.setVisibility(View.GONE);

    在你的代码中

    【讨论】:

      【解决方案5】:

      您可以隐藏整个视图,而不是隐藏布局,如下所示

        public class Expense extends Activity implements OnItemSelectedListener {
      
      private Spinner datype;
      private LinearLayout mainlayout;
      
      public void onCreate(Bundle b) {
          super.onCreate(b);
          setContentView(R.layout.expense);
          mainlayout=(LinearLayout)this.findViewById(R.id.layout1);
          datype=(Spinner)findViewById(R.id.da_type);
          List<String>data1=new ArrayList<String>();
          data1.add("Local");
          data1.add("Ex-Station Double Side");
          data1.add("Ex-Station Single Side");
          data1.add("Out-Station Double Side");
          data1.add("Out-Station Single Side");
          ArrayAdapter<String>adapter=new ArrayAdapter<String (this,android.R.layout.simple_spinner_item,data1);
          adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
          datype.setAdapter(adapter);
          if(datype.getSelectedItem().toString().equals("Local")){
              mainlayout.setVisibility(View.GONE);
          }
          else {
              mainlayout.setVisibility(View.VISIBLE);
          } 
      
          // here we set the listener
          datatype.setOnItemSelectedListener(this);
      }
      
      public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
          // here we change layout visibility again
          if(datype.getSelectedItem().toString().equals("Local")){
              mainlayout.setVisibility(LinearLayout.GONE);
          }
          else {
              mainlayout.setVisibility(LinearLayout.VISIBLE);
          } 
      }
      
      public void onNothingSelected(AdapterView<?> parent) {
      }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-09
        • 1970-01-01
        • 2011-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-03
        相关资源
        最近更新 更多