将drawable设置为TextView casue java.lang.StackOverflowError

时间:2017-02-16 08:22:09

标签: android android-drawable

我想在TextView的背景中使用png图像添加一些涟漪效果并找到this Post

我有action_darwer.xml drawable as

if($id == 5){
    xdebug_break();
}

并将其设置为TextView为

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="?attr/selectableItemBackgroundBorderless" android:state_pressed="true" /> <!-- pressed -->
    <item android:drawable="@drawable/drawer" /> <!-- default -->
</selector>

根本不起作用而且发出错误

<TextView android:id="@+id/action_drawer"
    android:layout_marginLeft="20dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/action_drawer"/>

如何解决这个问题?任何建议将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

  

发生StackOverflowError是因为应用程序过于冗长。

首先修改 background

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true"
      android:drawable="@drawable/pressed/>  // Press State
<item android:state_focused="true"
      android:drawable="@drawable/focused"/> // Focused
<item android:drawable="@drawable/drawer"/>  // Default State

</selector>

有关详细信息,请查看 How can I modify ripple color when using ?

答案 1 :(得分:0)

就我而言, 你无法定义 ?attr / selectableItemBackgroundBorderless as drawable,那就是崩溃的地方。 将其更改为其他可绘制的

例如:

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