以编程方式设置TextView背景

3

我为我的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。是否有其他方法可以做到这一点?


你尝试过setBackgroundDrawable()吗? - GuilhE
3个回答

5
如果您需要向后兼容性,请使用以下方式:
textView.setBackground(ContextCompat.getDrawable(MainActivity.this, R.drawable.cellborder));

MainActivity.this替换为您从中调用这些方法的活动的名称。

如果您从Pijamas活动中调用textView.setBackground(...),请执行以下操作:

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

最好的方式 - Noor Hossain

3

您需要使用

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

这将返回一个Drawable

如果您使用findViewById(),它将尝试在视图层次结构中查找一个View并返回。一个View不是Drawable,所以您无法强制转换它。


2

1
该方法已被弃用。请改用tv.setBackground(ContextCompat.getDrawable(QuestionActivity.this, R.drawable.bg_shadow)); - Dharmishtha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接