2016-12-25 7 views
1

Я пытаюсь создать форму, которая изменяется в соответствии с темой элемента в списке. Вот что мне нужно сделать; тонкая рамка вокруг моего круга области enter image description hereДинамическое изменение цвета Xml Style

Мой стиль XML является cw_full_oval

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <corners 
     android:bottomLeftRadius="100dp" 
     android:bottomRightRadius="100dp" 
     android:topLeftRadius="100dp" 
     android:topRightRadius="100dp" /> 
    <!--solid android:color=""/inner side full color--> 
    <padding 
     android:bottom="0dp" 
     android:left="0dp" 
     android:right="0dp" 
     android:top="0dp" /> 
    <size 
     android:width="100dp" 
     android:height="100dp" /> 
    <stroke 
     android:width="1dp" 
     android:color="@color/red_200" /> 
</shape> 
enter code here 

Вот основная часть макета XML, что мне это нужно в форме

   <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_margin="15dp" 
        android:background="@drawable/cw_full_oval" 
        android:orientation="vertical"> 

        <LinearLayout 
         android:layout_margin="10dp" 
         android:background="@drawable/cw_full_oval" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent"> 

         <LinearLayout 
          android:id="@+id/lin_lay_item_etkinlik_gl" 
          android:layout_width="match_parent" 
          android:layout_height="match_parent" 
          android:orientation="vertical"> 

         </LinearLayout> 
        </LinearLayout> 
       </LinearLayout> 

Изображение моих линееклайтов, как показано ниже, когда я устанавливаю стили отxml

enter image description here

В моем классе адаптера Я пытаюсь дать мой метод, название темы и текущий LinearLayout

String nameOfObj = currentActivity.getName(); 
Util.getInstance(context).setColor(nameOfObj,holder.lin_lay_etkinlik); 

Этот метод не является достаточно, я знаю, просто пытаюсь описать, что Мне нужно

public void setColor(String name, LinearLayout linlay){ 

     switch (name){ 
      case "Sinema": 
       linlay.setBackgroundResource(R.color.sinema); 
       break; 
      case "Piknik": 
       linlay.setBackgroundResource(R.color.piknik); 
       break; 
      case "Futbol": 
       linlay.setBackgroundResource(R.color.futbol); 
       break; 
      case "Gezi": 
       linlay.setBackgroundResource(R.color.gezi); 
       break; 
      case "Yemek": 
       linlay.setBackgroundResource(R.color.yemek); 
       break; 
      case "Sohbet": 
       linlay.setBackgroundResource(R.color.sohbet); 
       break; 
      case "Cay": 
       linlay.setBackgroundResource(R.color.cay); 
       break; 
      case "Toplantı": 
       linlay.setBackgroundResource(R.color.sinema); 
       break; 
      default: 
       linlay.setBackgroundResource(R.color.genel); 
       break; 
     } 
    } 

И, наконец, мой метод возвращает меняenter image description here

Как это исправить?

Ну, я не должен повиноваться своей стратегии, любые другие решения, основанные на пратиках, будут оцениваться.

ответ

1

Вам просто нужно сделать внутренний макет циркуляра.

Вы тоже варианты:

1-Создать круг с вашим вводимым коэффициентом желаемого цвета заливки. Так как вы не делаете идеально подходящий круг (если захотите, вам просто нужна форма в виде круга вашего рисунка), вам нужно сделать те же самые конфигурации в новом вытягиваемом.

2-Сделайте чертеж для каждого цвета и сделайте цвет заливки внутри, вы уже сделали это, вам просто нужно раскомментировать заполняющую цветную часть.

+1

Я исправил свою потребность. То, как вы описали, тоже прошло из моего разума. Я создал несколько круглых изображений и импортировал их в мой drawable, так что внутри цветов, которые я ввел изображения, но хотел бы знать, есть ли стиль управления x y yo, который будет более эффективным. – Sam

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

  • Нет связанных вопросов^_^