Подтвердить что ты не робот

Как сделать круг круга формы текста и установить другой цвет фона на основе условия

У меня есть TextView, мне нужно сделать круг формы TextView, а затем установить цвет фона на основе другого условия, которое я использовал. Я могу установить цвет фона на основе разных условий, но не смог сделать круг формы TextView. Так как это можно сделать. Пожалуйста, помогите мне решить эту проблему.

Код, который я использовал,

        TextView txt_stage_display   = (TextView)findViewById(R.id.txt_stage_display);

        if(m_enStage[position] == enSTAGE_START)
        {
            txt_stage_display.setBackgroundColor(Color.parseColor("#D48393"));              
        }

        else if(m_enStage[position] == enSTAGE_FLOW)
        {

            txt_stage_display.setBackgroundColor(Color.parseColor("#D48393"));              
        }
        else if(m_enStage[position] == enSTAGE_SAFE)
        {

            txt_stage_display.setBackgroundColor(Color.parseColor("#66B0CC"));              
        }
        else if(m_enStage[position] == enSTAGE_UNSAFE)
        {
            txt_stage_display.setBackgroundColor(Color.parseColor("#D8C627"));              
        }
        else if(m_enStage[position] == enSTAGE_FERTILE)
        {
            txt_stage_display.setBackgroundColor(Color.parseColor("#67A05E"));                                  
        }
        else
        {

            txt_stage_display.setBackgroundColor(Color.parseColor("#808080"));              
        }
4b9b3361

Ответ 1

Если у вас относительно небольшое количество цветов, вы можете создать файл с возможностью рисования для каждого цвета, например создать файл bg_red.xml:

<?xml version="1.0" encoding="utf-8"?>
<item xmlns:android="http://schemas.android.com/apk/res/android">
  <shape>
      <solid android:color="#f00" />
      <corners
          android:topLeftRadius="30dp"
          android:topRightRadius="30dp"
          android:bottomLeftRadius="30dp"
          android:bottomRightRadius="30dp"
          />
  </shape>
</item>

Затем назначьте определение TextView:

<TextView 
    android:id="@+id/tv"
    android:layout_height="60dp"
    android:layout_width="60dp" 
    android:text="X" 
    android:textColor="#fff"
    android:textSize="20sp"
    android:background="@drawable/bg_red"
    android:gravity="center_vertical|center_horizontal" 
    />

Обратите внимание, что ширина в два раза больше радиуса радиуса фона.

Чтобы изменить цвет кода:

TextView v = (TextView) findViewById(R.id.my_text_view);
v.setBackgroundResource(R.drawable.bg_blue);

Ответ 2

Чтобы добавить к принятому ответу, добавив размер тега внутри формы и убедившись, что высота и ширина достаточно велики, убедитесь, что фон окружен, даже если textView имеет много символов!

<shape>
 <solid android:color="#f00" />
 <corners
    android:topLeftRadius="30dp"
   android:topRightRadius="30dp"
     android:bottomLeftRadius="30dp"
     android:bottomRightRadius="30dp"
     />
 <size 
  android:height="25dp"
   android:width="25dp"/>
</shape>

Ответ 3

TextView textView = (TextView) findViewById(R.id.my_text_view);             
Drawable drawable = textView.getBackground();
drawable.setColorFilter(getResources().getColor(color), PorterDuff.Mode.SRC_IN);

работает для меня

Ответ 4

Добавьте файл circle_hired.xml в ваш drawable,

  <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >


            <solid android:color="@color/map_hide_bg"/>
            <stroke android:width="1dip" android:color="@color/map_hide_bg" />

    </shape>

но в вашем файле xml файла макета вам необходимо исправить ширину и высоту текста. он даст круговую форму.

<TextView
            android:id="@+id/tvMessages"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:gravity="center"
            android:background="@drawable/circular_message"
            android:padding="4dp"
            android:text="5"
            android:textColor="@color/white_color"
            android:textSize="@dimen/txt12"
            android:visibility="visible"
             />

Я уверен, что это вам поможет,

Ответ 5

Вы также можете добиться этого, установив цвет в фоновом режиме как

TextView textView = (TextView) findViewById(R.id.my_text_view);
((GradientDrawable)textView.getBackground()).setColor(R.color.my_color);