无法在api 19中的textview上设置drawable作为背景

时间:2017-05-16 04:27:56

标签: android

myTextView.setBackground(getContext().getDrawable(R.drawable.bubble_right_green));

此代码适用于API 23但在我在API 19上运行时崩溃,以下是日志:

 java.lang.NoSuchMethodError: android.content.Context.getDrawable
 at com.example.msp.legaldesire.Chat_Room_Adapter.getView(Chat_Room_Adapter.java:56)

我也试过

android:background="@drawable/bubble_right_green"

这也适用于API 23,但在API 19上我得到了这个:

     FATAL EXCEPTION: main                                                   Process: com.example.msp.legaldesire, PID: 14272
                                                                         android.view.InflateException: Binary XML file line #7: Error inflating class TextView
                                                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:719)
                                                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:354)
                                                                             at com.example.msp.legaldesire.Chat_Room_Adapter.getView(Chat_Room_Adapter.java:46)

我在林46遇到错误:

convertView = inflater.inflate(R.layout.chat_room_adapter, null);

我需要知道为什么会在api 19而不是23上发生这种情况。也可以将drawable设置为textview的背景。

编辑: 在我使用了一些建议之后

setBackgroundResource(R.drawable.bubble_right_green);

我收到了这个错误

FATAL EXCEPTION: main
                                                                       Process: com.example.msp.legaldesire, PID: 5041
                                                                       android.content.res.Resources$NotFoundException: Resource ID #0x7f02004c
                                                                           at android.content.res.Resources.getValue(Resources.java:2342)
                                                                           at android.content.res.Resources.getDrawable(Resources.java:1907)
                                                                           at android.support.v7.widget.ResourcesWrapper.getDrawable(ResourcesWrapper.java:128)
                                                                           at android.support.v7.widget.TintResources.getDrawable(TintResources.java:45)
                                                                           at android.view.View.setBackgroundResource(View.java:16251)
                                                                           at android.support.v7.widget.AppCompatTextView.setBackgroundResource(AppCompatTextView.java:73)
                                                                           at com.example.msp.legaldesire.Chat_Room_Adapter.getView(Chat_Room_Adapter.java:56)

我的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
    android:id="@+id/message"
    android:gravity="center"
   <!-- android:background="@drawable/bubble_right_green"  //ERROR -->
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

 </LinearLayout>

我的可绘性我试图添加为背景: bubble_right_green.9.png

4 个答案:

答案 0 :(得分:0)

您可以使用方法setBackgroundResource而不是setBackground。因为Context类的方法getDrawable是从API 21(https://developer.android.com/reference/android/content/Context.html#getDrawable(int)

添加的
myTextView.setBackgroundResource(R.drawable.bubble_right_green)

答案 1 :(得分:0)

尝试使用这些希望这将工作正常。!

textView.setBackgroundResource(R.drawable.sample_image);

答案 2 :(得分:0)

这真的很奇怪。正如你所说xml对你有用,那么试试这样做,可能会对你有帮助。

在drawable目录中创建一个xml: bg_bubble_right_green.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bubble_right_green" android:state_selected="true" />
<item android:drawable="@drawable/bubble_right_green" android:state_pressed="true" />
<item android:drawable="@drawable/bubble_right_green" />
</selector>

现在尝试将此xml用作TextView作为背景,例如:

<TextView
        android:id="@+id/message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_bubble_right_green"
        android:gravity="center" />

txt.setBackgroundResource(R.drawable.bg_bubble_right_green);

答案 3 :(得分:-1)

请尝试这种方法,我没有尝试过,但我希望它有效

 txt.setBackgroundResource(int rsid);
txt.setBakgroundDrawable(Drawable object);
txt.setBackgroundColor(color id);

最合适的是txt.setBackgroundResource(int rsid);您可以在其中直接从drawable文件夹设置图像,如下所示:

txt.setBakgroundResource(R.drawable.image_name);