以编程方式设置 TextView 背景

Programmatically setting TextView background

我已经为我的TextView定义了一个背景:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape= "rectangle"  >
    <solid android:color="#000"/>
    <stroke android:width="1dp"  android:color="#ff9"/>
</shape>

现在我正尝试以编程方式将其设置为我的 TextView

textview.setBackground((Drawable)findViewById(R.drawable.cellborder));

虽然这不起作用,它告诉我它不能将 View 转换为 Drawable。还有其他方法吗?

尝试像这样设置可绘制对象

textview.setBackgroundDrawable( getResources().getDrawable(R.drawable.cellborder) );

访问以获取更多帮助。 set background drawable programmatically in Android

你必须使用

getResources().getDrawable(R.drawable.cellborder);

这将 return 一个 Drawable

如果您使用 findViewById(),它将尝试在视图层次结构中找到一个 View 和 return。 View 不是 Drawable,所以你不能施放它。

如果您想要向后兼容,请使用以下内容:

textView.setBackground(ContextCompat.getDrawable(MainActivity.this, R.drawable.cellborder));

MainActivity.this 替换为 activity 您从何处调用这些方法的名称。

如果您从 Pijamas activity 致电 textView.setBackground(...),则执行以下操作:

textView.setBackground(ContextCompat.getDrawable(Pijamas.this, R.drawable.cellborder));