2011-10-03 27 views
9

Làm cách nào để xác định hình dạng cơ sở có thể tái sử dụng (hoặc gradient hoặc góc) dễ dàng trong XML?Xác định Kiểu cha mẹ XML của Gradient/Shape/Corners

Tôi có một chục hoặc nhiều gradient có thể vẽ giống với màu bắt đầu và màu kết thúc. Tôi đã hy vọng để xác định các công cụ giống hệt nhau ở một nơi khác và có một tập tin XML cho mỗi gradient khác nhau mà chỉ xác định màu bắt đầu và kết thúc. Điều đó có thể không?

Đây là cơ sở:

<?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> 

Sau đó, tôi muốn ghi đè lên startColor và endColor (và có thể các góc bán kính quá hoặc bất kỳ tài sản khác) trong tập tin XML của mỗi drawable.

Tôi đã thử sử dụng cả cha lẫn mẹ và kiểu, nhưng cả hai đều không sử dụng bất kỳ thuộc tính nào. Ví dụ:

<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> 

Và rồi cái nhìn drawable như:

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

Đó không làm việc. Tôi đã thử tương tự như đã đặt ở trên trong tệp XML của chính nó và sau đó thực hiện việc này cho mỗi đối tượng có thể drawable:

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

Điều đó cũng không có tác dụng.

Có cách nào để thực hiện việc này không?

Trả lời

7

Rất tiếc, tôi không nghĩ điều đó là có thể. Tôi đã cố gắng làm điều tương tự và không thể tìm ra giải pháp.

Điều tôi đề nghị là đặt tất cả giá trị của bạn vào tệp xml tài nguyên. Trong trường hợp của tôi, tôi đã chọn đặt kích thước của mình trong dimens.xml, & integers.xml và màu sắc trong colours.xml (mặc dù chúng có thể được kết hợp thành một tệp)

Trong khi tôi kết thúc bằng một tệp có thể vẽ hình dạng cho mỗi tệp màu sắc, ít nhất là nếu tôi muốn tinh chỉnh màu sắc hoặc đệm, tôi chỉ cần chỉnh sửa tệp colours.xml tệp integers.xml hoặc dimens.xml.

Một trong những hình dạng drawable của tôi sau đó trông như thế này: file

<?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> 

Resource liên kết: http://developer.android.com/guide/topics/resources/more-resources.html

Hope this helps.

Các vấn đề liên quan