在Android中以编程方式从drawable创建textview背景

问题描述 投票:0回答:3

我必须在 Android TextView 上以编程方式设置背景

我使用了下面的代码。它不起作用,而且还给了我 nullpointerexception 错误。

best_deals = (TextView) findViewById(R.id.bestdeals);
 best_deals.setBackground(getResources().getDrawable(
                                       R.drawable.headerradius));

但我必须把这些

best_deals.setTextColor(Color.parseColor("#be2351"));
表示它正在工作

上面的代码有什么问题?

这是我的header_redius.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <solid android:color="#000000"/>
     <corners 
      android:radius="15dp"
     />
     <gradient
            android:startColor="#434343"
             android:centerColor="#434343"
            android:endColor="#434343"
            android:angle="270" 
            android:type="linear"
            />
        <padding android:left="10dp"
     android:top="0dp"
     android:right="10dp"
     android:bottom="0dp"/> 
        <stroke
            android:width="2dp"
            android:color="#000000" />
            </shape>
android background gradient textview
3个回答
58
投票

您需要使用

setBackgroundResource()
方法。

例如:

best_deals.setBackgroundResource(R.drawable.headerradius);

更多关于 setBackgroundResource()。


2
投票

最终有效的代码

比 JELLYBEAN 更旧的 API 有不同的方式以编程方式加载可绘制对象。试试这个:

       final int sdk = android.os.Build.VERSION.SDK_INT;
        if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
            textView.setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_rect_outline));
        } else {
            textView.setBackground(getResources().getDrawable(R.drawable.shape_rect_outline));
        }

0
投票

您使用的形状不得具有 0dp 内边距

© www.soinside.com 2019 - 2024. All rights reserved.