我正在尝试根据自己活动中的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...
}
我已经在Changing color in a shape inside a layer-list programmatically和这里Android change color stroke (border) programmatically及其他地方寻找解决方案,但是无法正常工作。
你能帮忙吗?
这里是xml
活动TextView
中ViewContact.java
的{{1}}:
activity_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
答案 0 :(得分:1)
您要更改描边颜色(边框):
GradientDrawable gradientDrawable = (GradientDrawable)btn_submit.getBackground();
gradientDrawable.setStroke(2, Color.GREEN);
它有效..检查一次..
答案 1 :(得分:1)
您正在更改要加载的可绘制对象的颜色,但不能更改TextView
中使用的可绘制对象的颜色。将以下行添加到您的代码中,以在TextView
中设置背景可绘制内容:
findViewById(R.id.textView1).setBackground(layerDrawable);
您还可以直接通过{p>获取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"));
答案 2 :(得分:0)
Android Studio 3.5.2的步骤-在Android 9 Pie上运行的应用
在项目树中
打开 res 文件夹
打开可绘制文件夹
右键单击可绘制
选择新建> 可绘制资源文件
出现新资源屏幕
输入名称
textview_border.xml
不理会所有其他选项
按确定
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
</selector>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!--FILL -->
<solid android:color="#fafbfb" />
<!-- BORDER-->
<stroke android:width="1dp"
android:color="#FFFFFF" />
</shape>
提供任何textview
在这里,我们将背景颜色设置为XML中的Android系统颜色为白色
android:background="@android:color/white"
<TextView
android:id="@+id/textView1"
android:layout_width="0dp"
android:layout_height="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:background="@android:color/white"
android:text="SOME TEXT"
android:textAlignment="center"
android:textColor="@color/colorAppColorAppDark0"
android:textSize="@dimen/app_textSize_mediumToSmall"
.../>
现在我们可以改用drawable
android:background="@drawable/textview_border"
<TextView
android:id="@+id/textView1"
android:layout_width="0dp"
android:layout_height="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:background="@drawable/textview_border"
android:text="SOME TEXT"
android:textAlignment="center"
android:textColor="@color/colorAppColorAppDark0"
android:textSize="@dimen/app_textSize_mediumToSmall"
..layout commands etc./>
或者您可以通过编程方式添加
TextView textView1 = activity.findViewById(R.id.textView1);
//--------------------------------------------------------------------------------------
//see res/drawable/textview_border.xml
textView1.setBackgroundResource(R.drawable.textview_border);
在设计模式下
列表项
单击您的textView
设置 android:background =“ @ drawable / textview_border”
<TextView
android:id="@+id/fixture_list_constraintlayout_textView_fixturetypecode"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:background="@drawable/textview_border"
android:text="XXX"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="@dimen/app_textSize_mediumToSmall"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />