2013-12-23 2 views
0

Я хотел бы получить после OnClick кнопки Efect аналогично по умолчанию в Android, но с собственными цветамиПо умолчанию кнопки

кнопка по умолчанию белый или светло-серый Когда я потрогать цвет кнопки меняется на один момент (оранжевый) при отпускании, цвет кнопки до исходного цвета (белый/светло-серый)

Какой способ использует этот метод?

Я использовал onTouchListener(), чтобы установить прикоснулся цвета кнопки и OnClickListener(), чтобы установить обратно оригинальный цвет

Но когда я прокручивать кнопку группы (внутренняя ScrollView), когда я прикосновение к любой кнопке, цвет изменился, но когда спусковая кнопка цвет c не меняется задний. Какой метод я должен использовать? Как я могу это исправить?

/////////////////// Я создал цвета значений и определения 2-х цветов

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="white">#ffffff</color> 
    <color name="blue">#004080</color> 
</resources> 

Я создаю новый цвет папки и button_state.xml внутренний эта папка

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

к моей кнопке я назначить код в XML-файле

android:background="@color/button_states" 

Теперь моя кнопка не имеют ба ckground, но я не знаю, почему

ответ

2

создать файл XML определения состояния кнопки и кнопку цвета в зависимости от состояния, например, button_states.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="@color/pressed_button_color"/> 
    <item android:state_selected="true" 
      android:drawable="@color/selected_button_color"/> 
    <item android:drawable="@color/default_button_color"/> 
</selector> 

определить эти цвета в значениях/colors.xml

и использовать это в вашем файле XML макет кнопочную элемента, как:

android:background="@color/button_states" 
+0

это не работает для меня. Я объясняю это в своем сообщении – Empi

+0

, потому что вы использовали разные элементы выбора в button_states.xml, я попытался добавить следующие элементы в элемент выбора: , и это сработало для меня, поэтому вам следует рассмотреть добавляя значения по умолчанию и state_pressed – gile

+0

Yeep, теперь он отлично работает, это очень полезное решение. Большое спасибо – Empi

0

В XML для вашей кнопки установить свой фон к следующему

android:background="?android:attr/selectableItemBackground" 

Это будет автоматически обрабатывать изменения цвета быть изменения по умолчанию в андроид

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

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_pressed="true" android:drawable="@drawable/list_selector_pressed" /> 
<item android:state_focused="true" android:drawable="@drawable/list_selector_focused" /> 
<item android:drawable="@color/selector_background" /> 

</selector> 

Ваша вытяжка будет выглядеть так:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 

<solid android:color="@color/selector_background_pressed"/> 

</shape> 

Не 100% уверен, но вы можете просто быть в состоянии использовать @ цвет/my_colour непосредственно в селекторе, а не ссылаясь на удобочитаемый. Но этот путь, безусловно, работать

+0

хмм, у меня есть ошибки, но ожидать 11 лвл апи или выше, я должен использовать апи 8 – Empi

+0

Создание пользовательского выбора, как тот, я разместил должен работать для вас – Dreagen

+0

я создал селектор, но это Безразлично» t, я объяснил это в своей теме. – Empi

0

Я рекомендую вам использовать этот онлайн tool.Вам просто нужно выбрать желаемый набор цветов и после загрузки ресурсов поместить в свою папку ресурсов проекта соответственно, а затем применить тему к вашему приложению в файле манифеста с именем, которое вы установили в этом онлайн-инструменте («Имя темы» по умолчанию AppTheme)

<application android:debuggable="true" android:label="@string/app_name"android:theme="@style/AppTheme"> 
+0

Я попробую, хорошо – Empi

Смежные вопросы