Моя простая цель - изменить фон ImageButton
на разные состояния кнопок. Итак, что у меня естьНеожиданный результат использования разных фигур с состояниями ImageButton
mylayout.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MyActivity"
android:orientation="vertical"
android:id="@+id/idBackground">
...
<ImageButton
android:id="@+id/btnCapture"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/ic_photo_selector"
android:src="@drawable/ic_photo"
android:padding="25dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"/>
...
</RelativeLayout>
ic_photo_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="oval" >
<gradient
android:centerColor="#3311ffed"
android:centerX="0.5"
android:centerY="0.5"
android:endColor="#8011ffed"
android:gradientRadius="150"
android:startColor="#2711ffed"
android:type="radial" />
<stroke
android:width="2dp"
android:color="#3300DDFF" />
<padding
android:bottom="15dp"
android:left="15dp"
android:right="15dp"
android:top="15dp" />
</shape>
</item>
<item android:drawable="@drawable/capture_button_bg"/>
</selector>
capture_button_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<gradient
android:centerColor="#1111ffed"
android:centerX="0.5"
android:centerY="0.5"
android:endColor="#5E11ffed"
android:gradientRadius="150"
android:startColor="#0511ffed"
android:type="radial" />
<stroke
android:width="2dp"
android:color="#1100DDFF" />
<padding
android:bottom="15dp"
android:left="15dp"
android:right="15dp"
android:top="15dp" />
</shape>
ic_photo.png (это прозрачное изображение, но из-за этот веб-сайт имеет белый фон, я разместил его на черном слое)
Итак, как вы можете видеть, визуальную разницу между двумя состояниями (нажатие и по умолчанию) должно быть просто прозрачным. Но режим дизайна, как реальных устройств показали еще один результат
Default State Pressed State
![]()
![]()
Мой разум действительно заблокирован. Почему кнопка по умолчанию имеет такую разницу цветов с нажатой кнопкой? Как я и ожидал, разница должна быть только в режиме прозрачности.
Любые идеи? Или может быть, это что-то не так в моих фрагментах кода?
вы можете попробовать изображение. –
В селекторе вы устанавливаете параметр , который по умолчанию. Попробуйте заменить его прозрачным цветом. –
Kantesh
@ Ravi Это мне не помогло. Более того, когда я использовал «ImageView» вместо «ImageButton», селектор потерял смысл (кнопка теперь имеет статическое изображение). – user3307869