【问题标题】:How to set editText visible/invisible?如何设置editText可见/不可见?
【发布时间】:2015-12-17 09:05:33
【问题描述】:

在我的程序中,我希望能够在选中单选按钮时隐藏编辑文本,然后在用户单击另一个单选按钮时重新出现。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.waist2height); {
        final EditText h = (EditText)findViewById(R.id.editText2);          
        final RadioButton rCM = (RadioButton) findViewById(R.id.radioCM);
        final RadioButton rFT = (RadioButton) findViewById(R.id.radioFT);                       
        if(rCM.isChecked()){    
            h.setVisibility(View.VISIBLE);              
        }
        else if(rFT.isChecked()){               
            h.setVisibility(View.INVISIBLE);
        }}

下面的代码是我遇到的问题,我只在代码的相关部分而不是整个代码中添加了问题

if(rCM.isChecked()){                    
    h.setVisibility(View.VISIBLE);                  
}
else if(rFT.isChecked()){                   
    h.setVisibility(View.INVISIBLE);
} 

不幸的是,我似乎无法让它工作。 我错过了什么吗?还是我完全错了? 我试过h.setVisibility(View.GONE); 但是它只是破坏了xml的格式。

【问题讨论】:

  • 您是否在单选按钮中使用了 setOnCheckedChangeListener?
  • 使用监听事件触发可见方法而不是变量!
  • 这一定行得通..在这里提供您的代码,然后我们可以找到问题
  • 我添加了相关部分而不是整个内容

标签: android eclipse android-edittext radio-button


【解决方案1】:
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);        
    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if(checkedId==0){

                h.setVisibility(View.VISIBLE);

            }
            else if(checkedId==1){

                h.setVisibility(View.INVISIBLE);
            } 
        }
    });

【讨论】:

  • 它似乎不起作用,可能是因为 (checkedId == 0)?
  • 首先他使用的是RadioButton而不是RadioGRoup,其次如果你读到RadioGroup documentation,当复选框被清除时checkedid是-1。
【解决方案2】:

我已经制作了一个示例,它对我有用,只需看看这段代码:

我已将这些变量声明为全局变量

RadioButton rb1,rb2;
TextView tbHideOrNot;

然后在我的onCreate() 我有这个:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    rb1 = (RadioButton)findViewById(R.id.rb1);
    rb2 = (RadioButton)findViewById(R.id.rb2);
    tbHideOrNot = (TextView)findViewById(R.id.textView);
    rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                tbHideOrNot.setVisibility(View.INVISIBLE);
                rb2.setChecked(false);
            }
        }
    });
    rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                tbHideOrNot.setVisibility(View.VISIBLE);
                rb1.setChecked(false);
            }
        }
    });

}

在我看来,将RadioButton 用于您想要的用途并不是一个好主意,我建议您使用CheckBox,因为您只能单击ONE,而您必须这样做检查是否单击了第一个RadioButton,然后按第二个,您必须取消选中第一个,等等...好吧,这是您的代码,我只是给您一个建议,此代码对我有用,让我知道它是否适合你:)

顺便说一句,如果你想使用这个代码:

if(rCM.isChecked()){                    
 h.setVisibility(View.VISIBLE);                  
}
else if(rFT.isChecked()){                   
 h.setVisibility(View.INVISIBLE);
} 

没关系,但是当您启动Activity 时,您只会隐藏或不隐藏TextView,并且您必须输入任何RadioButton(如果您愿意)android:checked="true"false,如果您愿意是否显示TextView,但使用此代码您将不会在RadioButtons 上获得点击事件。

【讨论】:

    【解决方案3】:

    试试这个:

    rCM.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        h.setVisibility(View.VISIBLE);
    }
    });
    rFT.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        h.setVisibility(View.INVISIBLE);              
    }
    });
    

    【讨论】:

      猜你喜欢
      • 2017-10-31
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 2021-12-27
      • 2012-01-30
      相关资源
      最近更新 更多