Есть ли какой-либо способ в 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 градусов. Результат выглядел так:
, , Это больше, чем другие кнопки, и мне приходилось кодировать закругленные углы, хотя единственным атрибутом, который я менял, был "андроид: фон". Как я могу просто изменить фон? Заранее спасибо!!
Если вы посмотрите на рисунки, которые Android использует для кнопок, вы увидите, что всегда есть количество пикселей, оставшихся прозрачными возле границ изображения. Я предполагаю, что изображение, которое вы используете, не имеет прозрачных границ. Чтобы он выглядел равным образам Android, вы должны добавить эти границы. Вы можете просматривать папки android-sdk/platforms/<some-platform>/data/res/<some-drawable-folder>
чтобы увидеть, как создаются изображения. Надеюсь это поможет.
Вы можете легко изменить его на
<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>