Как мне установить цвет границы моего TextView программно? - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь изменить цвет границы моего TextView программно, в зависимости от условия if в моей деятельности.Вот мой ViewContact.java код:

if (bob == 0) {
  //change colour depending on value

  LayerDrawable layerDrawable = (LayerDrawable) ContextCompat
      .getDrawable(ViewContact.this,R.drawable.textboxes);
  GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable
      .findDrawableByLayerId(R.id.textbox_shape);
  gradientDrawable.setColor(Color.parseColor("#DA850B")); // change color
}

if (bob == 1) {

  LayerDrawable layerDrawable = (LayerDrawable) ContextCompat
      .getDrawable(ViewContact.this,R.drawable.textboxes);
  GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable
      .findDrawableByLayerId(R.id.textbox_shape);
  gradientDrawable.setColor(Color.parseColor("#0A7FDA")); // change color

}

if (bob == 2) {

etc...

}

Я посмотрел здесь Изменение цвета фигуры внутри списка слоев программным способом и здесь Android изменить цвет обводки (границы)программно и в другом месте для решения, но не могу заставить его работать.

Можете ли вы помочь?

Вот xml для моего TextView в действии ViewContact.javaactivity_view_contact.xml:

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight=".5"
            android:background="@drawable/textboxes"
            />

А вот textboxes.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--space between each text box-->
    <item
        android:top="3dp"
        android:id="@+id/textbox_shape"
        >
        <shape android:shape="rectangle">
            <!--formatting of colour inside the box-->
            <solid android:color="@android:color/transparent" />
            <!--formatting of lines on the box-->
            <stroke
                android:width="1dip"
                 />
            <corners android:radius="3dp"/>
            <!--text formatting in the box-->
            <padding
                android:textSize="30dp"
                android:top="15dp"
                android:bottom="1dp"
                android:left="20dp"
                android:right="20dp"/>
        </shape>
    </item>
</layer-list>

Ответы [ 2 ]

0 голосов
/ 03 января 2019

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

findViewById(R.id.textView1).setBackground(layerDrawable);

Вы также можете получить фон для TextView напрямую с помощью

LayerDrawable layerDrawable = (LayerDrawable) findViewById(R.id.textView1).getBackground();

Вот набор кодов для изменения фона и цвета обводки:

LayerDrawable layerDrawable = (LayerDrawable) findViewById(R.id.textView1).getBackground();
GradientDrawable gradientDrawable = (GradientDrawable) layerDrawable
    .findDrawableByLayerId(R.id.textbox_shape);
// Change background color
gradientDrawable.setColor(Color.parseColor("#DA850B"));
// Change stroke color. (Assumes 5px stroke width.)
gradientDrawable.setStroke(5, Color.parseColor("#FF0000"));
0 голосов
/ 03 января 2019

Вы хотите изменить цвет обводки (границы):

GradientDrawable gradientDrawable = (GradientDrawable)btn_submit.getBackground();
gradientDrawable.setStroke(2, Color.GREEN);

это работает .. проверьте один раз ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...