【问题标题】:App crashes when android:drawableTop is added to xml file将 android:drawableTop 添加到 xml 文件时应用程序崩溃
【发布时间】:2016-11-09 12:09:48
【问题描述】:

我正在处理一个 xml 文件,其中包括一个带有星数计数器的评分系统 - 它计算用户拥有的星数。现在这是 my_profile.xml 文件。在我的相对布局中,我想从矢量绘图中添加一个星号。我添加的行是这样的:

    android:drawableTop="@drawable/ic_icon_star"

我的文本视图看起来像这样:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".navdraweractivities.MyProfileActivity">
    ...
    <TextView
    android:id="@+id/textViewStars"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/buttonEdit"
    android:layout_alignBottom="@+id/buttonEdit"
    android:layout_alignStart="@+id/textViewAbout"
    android:drawableTop="@drawable/ic_icon_star"
    android:gravity="center"
    android:text="0"
    android:textColor="#FFFFFF"
    android:textSize="18sp" />
    ...
</RelativeLayout>

当我将 ic_icon_star 添加到 imageView 时,它会起作用。我尝试添加不同的drawables和drawableLeft、drawableRight等,但结果相同。

Logcat:

  11-09 13:15:42.469 31754-31754/? E/AndroidRuntime: FATAL EXCEPTION: main
                                               Process: com.weekendcoder.kemo.restaraunt, PID: 31754
                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.weekendcoder.kemo.restaraunt/com.weekendcoder.kemo.restaraunt.navdraweractivities.MyProfileActivity}: android.view.InflateException: Binary XML file line #85: Error inflating class TextView
                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                   at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                   at android.os.Looper.loop(Looper.java:136)
                                                   at android.app.ActivityThread.main(ActivityThread.java:5021)
                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                   at java.lang.reflect.Method.invoke(Method.java:515)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)
                                                   at dalvik.system.NativeStart.main(Native Method)
                                                Caused by: android.view.InflateException: Binary XML file line #85: Error inflating class TextView
                                                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
                                                   at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
                                                   at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
                                                   at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                   at com.weekendcoder.kemo.restaraunt.navdraweractivities.MyProfileActivity.onCreate(MyProfileActivity.java:26)
                                                   at android.app.Activity.performCreate(Activity.java:5336)
                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090)
                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                   at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                   at android.os.Looper.loop(Looper.java:136) 
                                                   at android.app.ActivityThread.main(ActivityThread.java:5021) 
                                                   at java.lang.reflect.Method.invokeNative(Native Method) 
                                                   at java.lang.reflect.Method.invoke(Method.java:515) 
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
                                                   at dalvik.system.NativeStart.main(Native Method) 
                                                Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_icon_star.xml from drawable resource ID #0x7f020090
                                                   at android.content.res.Resources.loadDrawable(Resources.java:2131)
                                                   at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
                                                   at android.widget.TextView.<init>(TextView.java:810)
                                                   at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:59)
                                                   at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:55)
                                                   at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103)
                                                   at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1013)
                                                   at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1072)
                                                   at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:684)
                                                   at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
                                                   at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
                                                   at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                   at com.weekendcoder.kemo.restaraunt.navdraweractivities.MyProfileActivity.onCreate(MyProfileActivity.java:26) 
                                                   at android.app.Activity.performCreate(Activity.java:5336) 
                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090) 
                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                   at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                   at android.os.Looper.loop(Looper.java:136) 
                                                   at android.app.ActivityThread.main(ActivityThread.java:5021) 
                                                   at java.lang.reflect.Method.invokeNative(Native Method) 
                                                   at java.lang.reflect.Method.invoke(Method.java:515) 
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
                                                   at dalvik.system.NativeStart.main(Native Method) 
                                                Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #5: invalid drawable tag vector
                                                   at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
                                                   at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
                                                   at android.content.res.Resources.loadDrawable(Resources.java:2127)
                                                   at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
                                                   at android.widget.TextView.<init>(TextView.java:810) 
                                                   at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:59) 
                                                   at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:55) 
                                                   at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) 
                                                   at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1013) 
                                                   at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1072) 
                                                   at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) 
                                                   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:684) 
                                                   at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
                                                   at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
                                                   at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
                                                   at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                   at com.weekendcoder.kemo.restaraunt.navdraweractivities.MyProfileActivity.onCreate(MyProfileActivity.java:26) 
                                                   at android.app.Activity.performCreate(Activity.java:5336) 
                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090) 
                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                   at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                   at android.os.Looper.loop(Looper.java:136) 
                                                   at android.app.ActivityThread.main(ActivityThread.java:5021) 
                                                   at java.lang.reflect.Method.invokeNative(Native Method) 
                                                   at java.lang.reflect.Method.invoke(Method.java:515) 
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
                                                   at dalvik.system.NativeStart.main(Native Method) 

【问题讨论】:

  • 您可以发布您的 logcat 以便更好地理解吗?
  • @FarazAhmed 在这里
  • 您的日志显示“android.content.res.Resources$NotFoundException: File res/drawable/ic_icon_star.xml”表示 ic_icon_star.xml 未从您的可绘制目录资源中解析,请尝试放置 png 资源如果有效。
  • Google 文档说“Android 4.4(API 级别 20)及更低版本不支持矢量绘图。”我不知道您使用的是哪个操作系统版本,请通过developer.android.com/studio/write/vector-asset-studio.html 更好地了解矢量图形。
  • 这篇文章准确地描述了你正在经历的事情以及如何解决它。 medium.com/@chrisbanes/…

标签: android xml android-layout textview android-vectordrawable


【解决方案1】:

在下面的链接中查看帖子上的醒目文字

通过使用这种间接方式,您可以在以下情况下使用矢量可绘制对象 作为 TextView 的 android:drawableLeft 属性,它不会 通常能够支持矢量绘图。

http://android-developers.blogspot.in/2016/02/android-support-library-232.html

【讨论】:

    猜你喜欢
    • 2020-09-06
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2016-06-22
    相关资源
    最近更新 更多