2016-09-03 11 views
1

мы могли бы определить кольцо вытяжку и использовать его в макете файл XML, а образец скопирован ниже,как динамически назначать кольцо цвета

возможно определить циклическую вытяжку и во время выполнения изменить цвет динамически? Вариант использования в элементе списка может иметь другой цвет кольца для кольца в другом элементе.

поиск и не удалось найти подходящее решение, оценено, если у кого-то есть предложения.

<ImageView 
        android:layout_width="10dp" 
        android:layout_height="10dp" 
        android:src="@drawable/ring" /> 

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:top="4dp" 
    android:right="4dp" 
    android:bottom="4dp" 
    android:left="4dp"> 
    <shape 
     android:shape="oval"> 
     <solid android:color="#4d4d4d" /> 
    </shape> 
</item> 
<item> 
    <shape 
     android:shape="oval"> 
     <stroke android:width="2dp" 
      android:color="#4d4d4d"/> 
    </shape> 
</item> 

+0

Попробуйте мой ответ .. работает отлично ... –

ответ

1

Сначала Помещенный Id к слою рисовать в состоянии, как этот

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/shape1" 
     android:top="4dp" 
     android:right="4dp" 
     android:bottom="4dp" 
     android:left="4dp"> 
     <shape 
      android:shape="oval"> 
      <solid android:color="#4d4d4d" /> 
     </shape> 
    </item> 
    <item 
     android:id="@+id/shape2" 

     > 
     <shape 

      android:shape="oval"> 
      <stroke android:width="2dp" 
       android:color="#4d4d4d"/> 
     </shape> 
    </item> 
    </layer-list> 

кодекса ...

LayerDrawable shape = (LayerDrawable) ContextCompat.getDrawable(demo.this,R.drawable.ring); 
GradientDrawable gradientDrawable1 = (GradientDrawable) shape.findDrawableByLayerId(R.id.shape1); 

GradientDrawable gradientDrawable2 = (GradientDrawable) shape.findDrawableByLayerId(R.id.shape2); 

gradientDrawable1.setColor(ContextCompat.getColor(demo.this,R.color.color_first)); 

gradientDrawable2.setColor(ContextCompat.getColor(demo.this,R.color.color_second));// changing to black color 

ImageView imageView=(ImageView)findViewById(R.id.imageview); 
imageView.setBackground(shape); 

enter image description here

+0

Благодаря Арджун! что, если кольцо с возможностью рисования имеет одну форму с двумя цветами: <твердых андроид: цвет = "# ee8838"/> <тактного андроид: ширина = "1DP" андроид: цвет = "# ff0000" /> lannyf

+0

Сегодня я не на ПК, но вы можете попробовать взять цветную форму в и установить id на элемент и установить цвет ..... –

+0

Также есть какой-то метод, если кольцо имеет два цвет один два в целом, который изменяется с ответом, а также, если хотите изменить цвет фона с помощью этого метода sh ape.setStroke (strokeWidth, color) set width int и color like upper answer .... –