держать кнопку андроида в выбранном состоянии - PullRequest
11 голосов
/ 17 февраля 2012

Я знаю, что это вопрос, который задавался много раз прежде, но я не могу решить его в своем коде.У меня есть две кнопки, и когда одна из них нажата, я хотел бы сохранить ее в выбранном состоянии, и наоборот.Я пытался сделать это, используя setSelected и setPressed, но я не могу заставить его работать.Вот код, который я использую:

    region_button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            objects = category;
            adap.notifyDataSetChanged();
            proximity_button.setPressed(false);
            region_button.setPressed(true);

        }
    });

    proximity_button.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            objects = proximity;
            adap.notifyDataSetChanged();
            region_button.setPressed(false);
            proximity_button.setPressed(true);

        }
    });

Редактировать: На основе комментариев, я должен добавить, что у меня есть собственный фон xml для кнопок, и я хотел бы сохранитьтекущий взгляд.

Ответы [ 5 ]

16 голосов
/ 17 февраля 2012

Я искал в Google и нашел этот пост переполнения стека:
Как сохранить нажатой одну кнопку после нажатия на нее?

mycodes_Button.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        mycodes_Button.setPressed(true);
        return true;
    }
});

Но прочитайте комментарий, это довольно интересно!

3 голосов
/ 17 февраля 2012

Почему вы используете кнопки? CheckBox или RadioGroup является лучшим решением для этих случаев

checkBox.setChecked(false);
1 голос
/ 29 сентября 2018

Я знаю, что опаздываю на вечеринку, но я пытался выполнить вышеупомянутое, и это все еще действовало как временное состояние (если только вы не хотите держать это в руках).

Что сработало для меня, так это наличие state_selected="true" в XML файле + imageButton.setSelected(true) в моем java-файле. см. ниже.

ibType1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
    ibType1.setSelected(true);
    ibType2.setSelected(false);
}//onClick
});

XML:

<item android:state_selected="true">
<shape android:shape="rectangle">
    <corners android:radius="45dp" />
    <solid android:color="@color/colorAccent" />
    <stroke android:width="1dp" android:color="#000000"/>
</shape>

Это позволит вам программно выбирать кнопки или кнопки с определенным состоянием фона, пока вы не решите выбрать другую кнопку или кнопку изображения.

1 голос
/ 17 февраля 2012

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

0 голосов
/ 17 февраля 2012

Флажок может сработать, но если вам нужен пользовательский интерфейс ближе UISegmentedControl на iOS, который может заключать в себе все кнопки, необходимые в LinearLayout, то вы можете сделать что-то вроде:

public void onClick( View v ){
    if ( v.getID == R.id.btn1 ) {
        btn1.setEnabled(false);
        btn2.setEnabled(true);
        // do stuff
    }
    else if ( v.getId() == R.id.btn2 ) {
        btn2.setEnabled(false);
        btn1.setEnabled(true);
        // do stuff
    }
}

Конечно, в вашей папке для рисования вы бы добавили цвет фона, границы и другие визуальные элементы для каждого состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...