RadioGroup中,的setEnabled(假)不工作!(RadioGroup,setEnabl

2019-08-02 09:59发布

我用的setEnabled(false)来设置它无法,但是,这是行不通的。 和此方法后,RadioGroup.IsEnabled()的值是假的。 该值已更改。

该代码是从Android的编程指南。 PS:微调组件使用的setEnabled(假)是很好。

代码如下:

包com.example.testviews;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioGroup;

public class TestRadioGroup extends Activity {


@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.radiogroup);

    final RadioGroup testRadioGroup = (RadioGroup) findViewById(R.id.testRadioGroup);

    final Button changeEnabledButton = (Button) findViewById(R.id.changeEnabledButton);
    changeEnabledButton.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            changeEnabled(testRadioGroup);
        }
    });

    final Button changeBgColorButton = (Button) findViewById(R.id.changeBackgroundColorButton);
    changeBgColorButton.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            changeBgColor(testRadioGroup);
        }
    });

}

protected void changeBgColor(RadioGroup testRadioGroup) {
    // TODO Auto-generated method stub
    testRadioGroup.setBackgroundColor(Color.BLUE);
}

protected void changeEnabled(RadioGroup testRadioGroup) {
    // TODO Auto-generated method stub
    if (testRadioGroup.isEnabled()) {
        testRadioGroup.setEnabled(false);
    } else {
        testRadioGroup.setEnabled(true);
    }
}

}

Answer 1:

使用下面的方法:

for (int i = 0; i < testRadioGroup.getChildCount(); i++) {
    testRadioGroup.getChildAt(i).setEnabled(false);
}


Answer 2:

视图可以由多个可触摸元件来构成。 你必须禁用所有这些,就像这样:

for(View lol : your_spinner.getTouchables() ) {
    lol.setEnabled(false);
}

如果是因为它也返回本身简单:

查找并返回此观点的后裔所有可触摸的意见,其中可能包括这个观点,如果它是可触摸本身。

查看#getTouchables()



Answer 3:

您不能使用下面的代码;

for(View lol : your_spinner.getTouchables() ) {
    lol.setEnabled(false);
}

一旦意见已禁用,没有可触摸的孩子/ descentant意见了。



文章来源: RadioGroup,setEnabled(false)not working!