Android - Любой способ стилизовать фон кнопки, но оставить все как есть?

1

Есть ли какой-либо способ в Android, чтобы стиль фонового градиента кнопки без изменения остальной части?

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

   <Button android:id="@+id/DemoButton"
    android:layout_width="105sp"
    android:layout_height="105sp"
    android:background="@drawable/button1"
    android:onClick="theButtonHandler"
    android:text="Fee">
  </Button>

Мой стиль был таким. , ,

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="true" >
   <shape>
      <gradient
         android:startColor="#5555AA"
         android:endColor="#000033"
         android:angle="270" />
   </shape>
 </item>
 <item>
   <shape>
      <gradient
         android:startColor="#BBBBDD"
         android:endColor="#BB9988"
         android:angle="270"/>
      <corners android:bottomRightRadius="3dp" android:bottomLeftRadius="3dp"
          android:topLeftRadius="3dp" android:topRightRadius="3dp"/>
    </shape>
  </item>
</selector>

Мне пришлось уложить угловые радиусы, потому что новая кнопка имела острые углы 90 градусов. Результат выглядел так: Изображение 174551

, , Это больше, чем другие кнопки, и мне приходилось кодировать закругленные углы, хотя единственным атрибутом, который я менял, был "андроид: фон". Как я могу просто изменить фон? Заранее спасибо!!

Теги:

2 ответа

2
Лучший ответ

Если вы посмотрите на рисунки, которые Android использует для кнопок, вы увидите, что всегда есть количество пикселей, оставшихся прозрачными возле границ изображения. Я предполагаю, что изображение, которое вы используете, не имеет прозрачных границ. Чтобы он выглядел равным образам Android, вы должны добавить эти границы. Вы можете просматривать папки android-sdk/platforms/<some-platform>/data/res/<some-drawable-folder> чтобы увидеть, как создаются изображения. Надеюсь это поможет.

  • 0
    Спасибо - это было очень полезно. (+1)
  • 0
    @ user316117, пожалуйста!
0

Вы можете легко изменить его на

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_pressed="true" >
   <shape>
      <gradient
         android:startColor="#5555AA"
         android:endColor="#000033"
         android:angle="270" />
       <corners
   android:bottomRightRadius="10dp"
   android:bottomLeftRadius="10dp"
   android:topLeftRadius="10dp"
   android:topRightRadius="10dp"/>
   </shape>
 </item>
 <item>
   <shape>
      <gradient
         android:startColor="#BBBBDD"
         android:endColor="#BB9988"
         android:angle="270"/>
       <corners
   android:bottomRightRadius="10dp"
   android:bottomLeftRadius="10dp"
   android:topLeftRadius="10dp"
   android:topRightRadius="10dp"/>
    </shape>
  </item>
</selector>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню