Я применил форму для кнопки, например:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient android:startColor="#DD000000" android:endColor="#DD2d2d2d" android:angle="90"></gradient>
<corners android:radius="15dip"></corners>
</shape>
Теперь я хочу использовать такой селектор, как:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/active"
android:state_pressed="true" />
<item android:drawable="@drawable/passive"/>
для этой кнопки. Является ли это возможным ...???
09-13 15:25:02.868: ERROR/AndroidRuntime(9129): FATAL EXCEPTION: main android.view.InflateException: Binary XML file line #13: Error inflating class <unknown>.
Я устанавливаю селектор какandroid:background
атрибутRoundedImageView
[ github.com/vinc3m1/RoundedImageView#usage] . Есть ли у кого-нибудь идеи, как это сделать?Подробный по существу ответ
Создать цветовой ресурс в
res / values / colors.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <item name="yellow" type="color">#F7B500</item> <item name="yellow_dark" type="color">#AC7E00</item> <integer-array name="androidcolors"> <item>@color/yellow</item> <item>@color/yellow_dark</item> </integer-array> </resources>
Создайте чертеж в
рез / вытяжка / bg_yellow_round.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="@color/yellow" /> <stroke android:width="2dp" android:color="@color/yellow" /> <corners android:bottomLeftRadius="20dp" android:bottomRightRadius="20dp" android:topLeftRadius="20dp" android:topRightRadius="20dp" /> </shape>
Создайте еще один чертеж, который вы хотите для перехода в том же месте, и назовите его
Рез / вытяжка / bg_yellow_dark_round.xml
<solid android:color="@color/yellow_dark" /> <stroke android:width="2dp" android:color="@color/yellow_dark" /> <corners android:bottomLeftRadius="20dp" android:bottomRightRadius="20dp" android:topLeftRadius="20dp" android:topRightRadius="20dp" />
Теперь создайте список состояний цвета в
res / color / btn_selector_yellow.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime"> <item android:drawable="@color/yellow" android:state_focused="true" android:state_pressed="false"/> <item android:drawable="@drawable/bg_yellow_dark_round" android:state_pressed="true"/> <item android:drawable="@drawable/bg_yellow_round"/> </selector>
Теперь установите его на свою кнопку следующим образом
<Button android:id="@+id/button1" android:layout_width="248dp" android:layout_height="44dp" android:layout_gravity="center_horizontal" android:layout_marginBottom="10dp" android:layout_marginTop="20dp" android:background="@color/btn_selector_yellow" android:text="AZ_ is so cool" />
Теперь это будет переход от
к
.
источник
shape.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/star_off"/> <corners android:radius="5dp"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> </shape>
selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_mediumAnimTime"> <item android:drawable="@color/tab_focused" android:state_focused="true" android:state_pressed="false"/> <item android:drawable="@color/tab_pressed" android:state_pressed="true"/> <item android:drawable="@drawable/shape"/> </selector>
источник
Вы также можете создать фигуру, используя селектор внутри. Если ваша фигура просто меняет свой цвет в разных состояниях, это намного чище.
цвет / color_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/blue_dark" android:state_pressed="true" /> <item android:color="@color/blue_light" /> </selector>
вытяжка / shape.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/color_selector" /> <corners android:bottomLeftRadius="6dip" android:bottomRightRadius="6dp" /> <padding android:bottom="0dip" android:left="0dip" android:right="0dip" android:top="0dip" /> </shape>
источник
Ну, я знаю, что уже слишком поздно, но вот решенный пример
<TextView android:id="@+id/txt_out_going_calls" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="04dp" android:layout_weight="1" android:background="@drawable/header_text_view_selector" android:gravity="center" android:text="@string/outgoing_calls_tab_button_text" android:textColor="@color/home_text_color" />
и мой
header_text_view_selector
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true"> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/home_fragment_tab_color_selected"/> <corners android:radius="25dip" /> <padding android:bottom="08dip" android:left="9dip" android:right="9dip" android:top="08dip" /> </shape> </item> <item android:state_selected="false"> <shape> <solid android:color="@color/home_fragment_tab_color_simple"/> <corners android:radius="25dip" /> <padding android:bottom="08dip" android:left="9dip" android:right="9dip" android:top="08dip" /> </shape> </item> </selector>
Итак, в основном я создаю округленный
textview
селектор. Здесь я обрабатываю толькоstate_selected
иnot_selected
. Надеюсь, поможетисточник
Это мой путь, и он работает!
<item android:state_pressed="true"> <shape android:shape="oval"> <gradient android:centerX=".6" android:centerY=".40" android:endColor="@color/colorPrimary" android:gradientRadius="20" android:startColor="@color/colorPrimary" android:type="radial" /> <stroke android:width="1dp" android:color="#FFFFFF" /> <size android:width="55dp" android:height="55dp" /> </shape> </item> <item android:state_focused="false"> <shape android:shape="oval"> <gradient android:centerX=".6" android:centerY=".40" android:endColor="@android:color/transparent" android:gradientRadius="20" android:startColor="@android:color/transparent" android:type="radial" /> <stroke android:width="1dp" android:color="#FFFFFF" /> <size android:width="55dp" android:height="55dp" /> </shape> </item>
источник
Используйте свое имя формы, как и любое изображение, и используйте его селектор, как вы используете изображение. Попробуйте, вы не столкнетесь ни с какими проблемами. Это то, о чем вы спрашивали?
источник
Мой пример - круглая кнопка с state_pressed. код ниже:
<?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"> <solid android:color="@color/light_primary_color" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="@color/accent_color" /> </shape> </item> </selector>
источник
Чтобы было удобнее использовать повторно, вы можете установить состояния для отдельных свойств. Избегайте дублирования ваших форм
<selector xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <corners android:radius="5dp"/> <solid android:state_enabled="false" android:color="@color/transparent" /> <solid android:state_enabled="true" android:color="@color/background" /> <stroke android:width="@dimen/dividerHeight" android:color="@color/dividerLight" /> </shape> </item> </selector>
Я смог программно установить фон после отключения с помощью этого метода.
источник