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
答案 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);