Я сделал обычную многоуровневую растягиваемую, чтобы действовать как фон для кнопки. Иногда я хочу, чтобы часть этого рисованного слоя была синей. Иногда я хочу, чтобы он был зеленым. Точка - это переменная, и я хочу, чтобы она была определена в соответствующем XML-представлении.Как настроить пользовательскую выгрузку, определенную в XML во время выполнения?
Возможно ли это? Как написать drawable в XML, значение которого я могу определить во время выполнения?
custom_button.xml
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/button_inset_horizontal_material"
android:insetTop="@dimen/button_inset_vertical_material"
android:insetRight="@dimen/button_inset_horizontal_material"
android:insetBottom="@dimen/button_inset_vertical_material">
<shape android:shape="rectangle">
<corners android:radius="@dimen/control_corner_material" />
<solid android:color="?attr/colorButtonNormal" />
<padding android:left="@dimen/button_padding_horizontal_material"
android:top="@dimen/button_padding_vertical_material"
android:right="@dimen/button_padding_horizontal_material"
android:bottom="@dimen/button_padding_vertical_material" />
</shape>
</inset>
Линия <solid android:color="?attr/colorButtonNormal" />
является то, что я хочу, чтобы установить во время выполнения. У меня есть собственное пользовательское представление для этого класса, уже получающего значение цвета, которое я хочу использовать здесь, - как применить его к XML этого drawable?
Не знаю, есть ли способ изменить пользовательскую логику программно во время выполнения. Вам просто нужно создать два файла custom_button.xml и выбрать их соответствующим образом, когда вы захотите один за другим. –
@JaySnayder Я на самом деле пытаюсь создать библиотеку для пользовательского представления кнопок, что позволяет мне легко изменить значение, используемое в этом drawable. – ZakTaccardi
Извлечение фигуры в растягиваемое и, возможно, тогда вы можете ее изменить: http://stackoverflow.com/questions/7164630/how-to-change-shape-color-dynamica –