2015-02-03 7 views
4

Я успешно создал кнопку пульсации в android 5.0 с использованием XML. Мой код выглядит следующим образом:android рябь кнопка с фоном

<?xml version="1.0" encoding="utf-8"?> 
<!-- the flat button to be used in app --> 
<!-- define the ripple --> 
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="?android:colorControlHighlight"> 
    <!-- the ripple object --> 
    <item android:id="@android:id/mask"> 
     <!-- button shape (w/ radius) --> 
     <shape android:shape="rectangle"> 
      <!-- radius of vertices --> 
      <corners 
       android:topLeftRadius="7dp" 
       android:topRightRadius="7dp" 
       android:bottomLeftRadius="7dp" 
       android:bottomRightRadius="7dp" /> 
      <!-- color accent (not working) --> 
      <solid android:color="?android:colorAccent" /> 
     </shape> 
    </item> 
</ripple> 

У меня проблема с кнопкой: цвет фона кнопки не изменится. Я также пробовал:

<solid android:color="#0000ff" /> 

Фон по-прежнему остается прозрачным (цвет не работает).

Как я должен идти о создании фона (баттона) прямоугольника с синим, если не через свойство

<solid/> 

?

Благодаря

+1

Прочитайте документацию для RippleDrawable. Слой маски не нарисован. Удалите атрибут android: id из вашего тега . – alanv

ответ

6

Использование @android:id/mask идентификатора устанавливает слой в качестве маски, который используется только для отсечения границ и не обращается. Удаление атрибута id должно дать вам то, что вы ищете. Кроме того, вы можете использовать атрибут android:radius, если углы имеют одинаковый радиус.

<?xml version="1.0" encoding="utf-8"?> 
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
     android:color="?android:attr/colorControlHighlight"> 
    <item> 
     <shape android:shape="rectangle"> 
      <corners android:radius="7dp" /> 
      <solid android:color="?android:attr/colorAccent" /> 
     </shape> 
    </item> 
</ripple> 
+0

Спасибо! Прекрасно работает! – 26hmkk