2012-03-07 2 views
5

В настоящее время я разрабатываю приложение для Android. Я хочу, чтобы сделать текст (а заголовок) с фоном, который выглядит следующим образом:Изменить размер растрового изображения внутри слоя с плавающей точкой

_______ 
/______/ 

У меня есть следующий код:

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape>  
      <gradient 
       android:startColor="@color/jaarkleur" 
       android:centerColor="@color/jaarkleur" 
       android:endColor="#E66C2C00" 
       android:angle="0" /> 
      <stroke android:width="1dp" 
      android:color="#ff000000" 
      />  
     </shape> 
    </item> 
    <item> 
     <bitmap android:src="@drawable/overlay_left" android:gravity="left" /> 
    </item> 
    <item> 
     <bitmap android:src="@drawable/overlay_right" android:gravity="right" /> 
    </item> 

</layer-list> 

Так что я сделал к изображениям, с Transparant треугольника, которые являются с обеих сторон.

Это прекрасно работает для заголовков только с одной строкой, но когда заголовок занимает две строки, это выглядит следующим образом:

http://i.imgur.com/lDQGo.png

Так что мой вопрос: Можно ли изменить размер изображения так выглядит правильно? Спасибо!

+0

Вы смотрели в использовании 9-патч? – dmon

+0

Да, но я не хочу использовать 9-патч, я хочу сохранить «внутреннюю» переменную цвета. – user1255553

ответ

10

Я решил использовать два (полупрозрачных) изображения, которые представляют углы.

XML-выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item> 
       <shape>  
        <gradient 
         android:startColor="@color/jaarkleur" 
         android:centerColor="@color/jaarkleur" 
         android:endColor="#E66C2C00" 
         android:angle="0" /> 
        <stroke android:width="1dp" 
      android:color="#ff000000" 
      />  
       </shape> 
     </item> 
     <item> 
      <bitmap android:src="@drawable/overlay_left" android:gravity="left|top" /> 
     </item> 
     <item> 
      <bitmap android:src="@drawable/overlay_right" android:gravity="right|bottom" /> 
     </item>   
</layer-list> 
+2

вы также можете использовать 'android: gravity =" right | fill_vertical "' и 'android: gravity =" left | fill_vertical "' для масштабирования ваших правых и левых растровых изображений по вертикали – grine4ka

1

Вместо использования списка слоев с градиентным/пограничным штрихом и настраиваемым изображением, используйте NinePatchDrawable.

Существует также удобный 9-патч creater, который поставляется с SDK android.

+0

Причина, по которой я хочу использовать градиентный цвет, заключается в том, что переменная «jaarkleur» может измениться. Легче просто изменить эту переменную, чтобы создать совершенно новое фоновое изображение. – user1255553

Смежные вопросы