Подтвердить что ты не робот

RadioGroup, setEnabled (false) не работает!

Я использовал setEnabled (false), чтобы установить его неактивным, но он не работает. и после этого метода значение RadioGroup.IsEnabled() является ложным. Значение было изменено.

Код находится в руководстве по программированию на Android. Ps: Компонент Spinner использует setEnabled (false).

выглядит следующим образом:

пакет 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);
    }
}

}

4b9b3361

Ответ 1

используйте следующий метод:

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

Ответ 2

Представления могут быть составлены несколькими касающимися элементами. Вы должны отключить их все, например:

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

Если он простой, так как он также возвращает себя:

Найти и вернуть все осязаемые представления, которые являются потомками этого представления, возможно, включая это представление, если оно осязаемо.

Просмотр # getTouchables()

Ответ 3

Вы не можете использовать следующий код:

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

После того, как представления отключены, больше нет осязаемых представлений child/descentant.