我已经使用了 setEnabled(false)
来设置为无法,但这是行不通的,而且在这个方法之后,这个值的 RadioGroup.isEnabled()
是假的。值被更改。
代码来自Android编程指南。
PS:该 Spinner
组件的使用 setEnabled(false)
也是。
代码如下。
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);
}
}
}
使用以下方法。
for (int i = 0; i < testRadioGroup.getChildCount(); i++) {
testRadioGroup.getChildAt(i).setEnabled(false);
}
视图可以由多个可触摸元素组成。你必须把它们全部禁用,像这样。
for(View lol : your_spinner.getTouchables() ) {
lol.setEnabled(false);
}
如果它是一个简单的,因为它也返回自己。
找到并返回所有这个视图的后裔的可触摸视图,如果这个视图本身是可触摸的,则可能包括它。
你不能使用下面的代码。
for(View lol : your_spinner.getTouchables() ) {
lol.setEnabled(false);
}
一旦views被禁用,就没有可触摸的childdescentant视图了。