Кнопка рисует нормальное состояние после нажатия - PullRequest
1 голос
/ 30 марта 2010

Я новичок в Android и только начинаю с самых основ. Я реализую свой пользовательский скин кнопки, используя изображения .9.png для состояний норма / фокус / нажатие. Работает нормально, но я заметил, что после нажатия кнопки с фокусировкой он визуально «теряет» фокус и рисует рамку нормального состояния. Я планировал использовать разные изображения состояний, чтобы подсвечивать, какая кнопка выбрана прямо сейчас, но кажется, что она не будет работать. Я также заметил, что то же самое происходит с кнопкой LAF по умолчанию. Это нормально, или это просто проблема с эмулятором? Какую хорошую работу можно использовать?

Спасибо

Ответы [ 2 ]

1 голос
/ 08 ноября 2010

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

Мои кнопки android: в качестве поля фона было задано следующее рисование (drawable / my_btn.xml)

<?xml version="1.0" encoding="utf-8"?>    
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/btn_pressed" />
    <item android:state_focused="true" android:drawable="@drawable/btn_focused" />

    <item android:state_selected="true" android:drawable="@drawable/btn_selected" />

    <item android:drawable="@color/transparent" />
</selector>

Вы заметите, что у меня есть предмет с установленным атрибутом android: state_selected = "true".

Тогда в коде вы можете иметь

Button mybtn = (Button)findViewById(R.id.my_btn_1);
mybtn.setOnClickListener(new OnClickListener(){
    public void onClick(View v) {   
        Button btn = (Button)findViewById(R.id.nav_secondary_1);
        btn.setSelected(true);
    }
});

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

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

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

<item android:state_selected="true" android:state_focused="true" android:drawable="@drawable/btn_selected_focused" />

Читайте о Селекторах здесь http://developer.android.com/guide/topics/resources/drawable-resource.html

0 голосов
/ 30 марта 2010

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

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