34

以前は無効に設定してsetEnabled(false)いましたが、機能せず、このメソッドの後、の値RadioGroup.isEnabled()は false です。値が変更されました。

コードは Android Programming Guide からのものです。

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);
    }
}

}

4

3 に答える 3

93

ループを介して、ラジオ グループに属する各ボタンを繰り返して無効にします。次に例を示します。

for (int i = 0; i < testRadioGroup.getChildCount(); i++) {
    testRadioGroup.getChildAt(i).setEnabled(false);
}
于 2012-11-07T02:17:59.423 に答える
4

ビューは、複数のタッチ可能な要素で構成できます。次のように、それらをすべて無効にする必要があります。

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

それ自体も返すため、単純なものの場合:

このビューの子孫であるすべてのタッチ可能なビューを検索して返します。このビュー自体がタッチ可能な場合は、このビューを含む可能性があります。

View#getTouchables()

于 2013-10-18T09:42:58.267 に答える
0

次のコードは使用できません。

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

ビューが無効になると、タッチ可能な子/子孫ビューはなくなります。

于 2014-06-25T05:34:13.583 に答える