Android - установить фокус на нажатие кнопки - PullRequest
6 голосов
/ 13 января 2011

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

Для создания такой вещи я попробовал следующее:

код:

btn1.setOnClickListener(new button_click_listener());
btn2.setOnClickListener(new button_click_listener());


class button_click_listener implements Button.OnClickListener
{
    @Override
    public void onClick(View v) 
    {
       if(v==btn1)
       {
            btn1.requestFocus();
       }

       if(v==btn2)
       {
            btn2.requestFocus();
       }
        .......
    }
}

XML-макет:

<Button 
   android:text="Click 1" 
   android:id="@+id/btnClick1" 
   android:layout_width="70dp" 
   android:layout_height="wrap_content"
   style="@android:style/Widget.Button.Small"
   android:padding="10dp"
   android:focusableInTouchMode="true">
</Button>

Как отобразить выделенный щелчок на кнопке, которая была нажата последней? Пожалуйста, покажи мне способ и дай предложения.

Обновление:

Если я установил android:focusable="true", тогда кнопка подсвечивается и фокусируется, но в то же время мне нужно дважды нажать на кнопку, чтобы выполнить фактическое событие нажатия.

Ответы [ 3 ]

3 голосов
/ 13 января 2011

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

0 голосов
/ 23 марта 2013

Проблема в том, что вам нужно новое состояние. Следуйте инструкциям здесь и добавьте «state_highlighted», или как вы хотите его назвать:

Как добавить пользовательское состояние кнопки

0 голосов
/ 14 апреля 2012

Эта функциональность напоминает RadioButtonGroup, настройте RadioButtonGroup в соответствии с вашими требованиями.

Настройка стиля в RadioGroup:

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:state_window_focused="false"
        android:drawable="@drawable/radio_hover" />
    <item android:state_checked="false" android:state_window_focused="false"
        android:drawable="@drawable/radio_normal" />
    <item android:state_checked="true" android:state_pressed="true"
        android:drawable="@drawable/radio_active" />
    <item android:state_checked="false" android:state_pressed="true"
        android:drawable="@drawable/radio_active" />
    <item android:state_checked="true" android:state_focused="true"
        android:drawable="@drawable/radio_hover" />
    <item android:state_checked="false" android:state_focused="true"
        android:drawable="@drawable/radio_normal_off" />
    <item android:state_checked="false" android:drawable="@drawable/radio_normal" />
    <item android:state_checked="true" android:drawable="@drawable/radio_hover" />
    </selector>

Установите этот селектор на кнопку радио.

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