java - ClipDrawable getDrawable() 返回一个 StateListDrawable

标签 java android

我需要访问 ClipDrawable设置剪辑电平。这是可绘制对象:

@drawable/left_arrow:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <clip
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:drawable="@drawable/rotated_square"
      android:clipOrientation="horizontal"
      android:gravity="left" />
  </item>
</selector>

@drawable/rotated_square:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <rotate
      android:fromDegrees="45"
      android:pivotX="50%"
      android:pivotY="50%"
      android:toDegrees="45">
      <shape
        android:shape="rectangle">
        <size
          android:width="250dp"
          android:height="250dp"/>
        <solid
          android:color="#ffffff"/>
      </shape>
    </rotate>
  </item>
</selector>

当我尝试将可绘制对象 left_arrow 作为 ClipDrawable 检索时像这样:

ClipDrawable drawable = (ClipDrawable) getResources().getDrawable(R.drawable.left_arrow);

我在 LogCat 中收到以下错误:

Caused by: java.lang.ClassCastException: android.graphics.drawable.StateListDrawable cannot be cast to android.graphics.drawable.ClipDrawable
        at com.vcapra1.pingpongscoreboard.MainActivity.onCreate(MainActivity.java:89)

为什么我的ClipDrawable作为 StateListDrawable 返回?

最佳答案

你的 left_arrowStateListDrawable因为它有一个 <selector>作为它的根元素。如果你想把它作为 ClipDrawable你应该使用 <clip>元素直接作为 XML 的根而不使用 <selector><item>标签。

关于java - ClipDrawable getDrawable() 返回一个 StateListDrawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27585329/

相关文章:

java - 在 Couchbase 中调用删除文档(带分页)时的 Spring Data "TimeoutException"

java - 如何在父对象中同步(d)方法和修改对象的属性?

android - LeakCanary 不会捕获我故意添加的泄漏。我错过了什么?

java - Java的SwingWorker和Android的AsyncTask的区别

android - 如何有效地在 ListView 中加载 1000 条数据

android - 我可以加快 Admob 在 Android 上的加载速度吗?

android - findViewByID(R.id.Button1) 方法无法识别参数中的 "id"

java - 关于对象创建的基本事情 :is it a good practice to create a new object of listener, 每次我们想为一个 View 设置一个监听器

java - 远程 Java 编译器

java - 使用 BPM 11G 的 Jdeveloper 中的 token 无效