Определение родительского стиля XML градиента / формы / углов - PullRequest
9 голосов
/ 03 октября 2011

Как я могу определить легко повторно используемую базовую форму (или градиент, или углы) в XML?

У меня есть дюжина нарисованных градиентов, которые будут такими же, как начальный и конечный цвета. Я надеялся определить идентичные вещи где-то еще и иметь файл XML для каждого различного градиента, который определял только начальный и конечный цвета. Это возможно?

Это база:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <gradient xmlns:android="http://schemas.android.com/apk/res/android"
        android:type="linear" 
        android:angle="270" 
    android:startColor="#e1ffffff"
    android:endColor="#e100ff00">

    <stroke android:width="1dp" 
            android:color="#ff000000" />

    <corners android:radius="4dp" />
</gradient>
</shape>

Затем я хотел перезаписать startColor и endColor (и, возможно, радиус углов или любое другое свойство) в файле XML каждого рисованного объекта.

Я попытался использовать оба родительских элемента и стили, но ни один из них не использовал ни одно из свойств. Например:

<style name="base_gradient">
    <item name="android:angle">270</item>
    <item name="android:type">linear</item>
    <item name="android:startColor">#e1ffffff</item>
    <item name="android:endColor">#e100ff00</item>
</style>

И тогда ничья выглядит так:

<gradient style="@style/base_gradient" />

Это не сработало. Я попытался аналогичным образом поместить вышеупомянутое в свой собственный XML-файл и затем сделать это для каждого рисованного объекта:

<gradient parent="@drawable/base_gradient" />

Это тоже не сработало.

Есть ли способ сделать это?

1 Ответ

7 голосов
/ 03 октября 2011

К сожалению, я не думаю, что это возможно.Я пытался сделать то же самое и не смог найти решение.

Я бы предложил поместить все ваши значения в файлы ресурсов XML.В моем случае я решил поместить свои размеры в sizess.xml, & inteers.xml и цвета в colours.xml (хотя они могли бы быть объединены в один файл)

В то время как у меня получился нарисованный файл формыдля каждого цвета, по крайней мере, если я хочу настроить цвета или отступы и т. д. Мне нужно всего лишь отредактировать файл colours.xml inteers.xml или Dimens.xml в файле.

Одна из моих фигур была нарисована так

<?xml version="1.0" encoding="UTF-8"?>

<shape
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle" >

  <corners 
      android:radius = "@dimen/radius_corner" />

  <!-- end colour at top, start colour at bottom -->
  <gradient
      android:angle="@integer/gradient_angle_default"
      android:endColor="@color/white" 
      android:startColor="@color/pink_pale"/>

  <padding
      android:left = "@dimen/my_padding"
      android:right = "@dimen/my_padding"
      android:bottom = "@dimen/my_padding"
      android:top = "@dimen/my_padding"  />

</shape>

Ссылка на файл ресурса: http://developer.android.com/guide/topics/resources/more-resources.html

Надеюсь, это поможет.

...