2015-05-26 3 views
2

У меня есть LinearLayout. Я применил эффект пульсации, который работает нормально. То, что я делаю, - это когда пользователь нажимает на него, он должен изменить свой цвет на белый (по умолчанию серый). Если щелкнуть снова, он снова станет Серый. Этого я достиг, используя layout.setBackgroundColor(Color.WHITE);.Android- Изменить цвет и иметь рябь на макете в то же время

Но я хочу, чтобы и рябь, и этот цвет переключались. Если я использую setBackgroundColor, эффект пульсации исчезнет. Есть ли какие-нибудь подсказки о том, как это сделать?

XML для ряби (фон LinearLayout):

<?xml version="1.0" encoding="utf-8"?> 
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
android:color="@color/divider"> 
<item android:drawable="@color/background" /> 
</ripple> 

Просьба предложить эквивалентное решение для предварительного леденец устройств. Фоном для этого LinearLayout по предварительному леденец есть

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

ответ

1

Вместо setBackgroundColor, используйте setImageDrawable() и передать идентификатор макета XML (R.drawable.your_layout).

Определите два разных макета xml: один с серой спиной, а другой с белым фоном.

Белый фон

<?xml version="1.0" encoding="utf-8"?> 
    <ripple xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="@color/divider"> 
    <item android:drawable="#ffffff" /> 
    </ripple> 

Серый фон

<?xml version="1.0" encoding="utf-8"?> 
    <ripple xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="@color/divider"> 
    <item android:drawable="888888" /> 
    </ripple> 
+0

Хорошо, но как сделать его белым? – Mangesh

+0

Я отредактировал мой пост – Gordak