2014-09-04 2 views
0

Следующий XML-код из послойного списка IST Дано:Android LayerDrawable: Как программно установить координаты слоя?

<layer-list> 
    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/my_color_a" /> 
     </shape> 
    </item> 
    <item android:left="5dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/my_color_b" /> 
     </shape> 
    </item> 
</layer-list> 

Чтобы сделать некоторые вещи динамически мне нужно восстановить этот код программно как LayerDrawable класса. Этот код существует:

ShapeDrawable layer0 = new ShapeDrawable(new RectShape()); 
ShapeDrawable layer1 = new ShapeDrawable(new RectShape()); 
LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] {layer0, layer1}); 

Как вы переводите android:left="5dp" в Java-код? Для этого свойства не существует.

+1

У вас есть метод 'setLayerInset()' класса 'LayerDrawable'. – Luksprog

+0

Да, но используя эту функцию, значения применяются для всех слоев, а не только для одного, определенного. – EightBitBoy

+1

try 'setLayerInset (слой, leftOffset, topOffset, rightOffset, bottomOffset)' –

ответ

1

Попробуйте setLayerInset(layer, leftOffset, topOffset, rightOffset, bottomOffset)

Обратитесь к LayerDrawable documentation для получения дополнительной помощи.

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