以编程方式设置 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));
我已经为我的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));