我有自定义视图:
public class MyView extends RelativeLayout {
private LayoutInflater inflater;
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
inflater = LayoutInflater.from(context);
inflater.inflate(R.layout.my_view, this);
}
}
使用xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"/>
我还有一个背景选择器:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/top_press" /> <!-- pressed -->
<item android:drawable="@drawable/top_idle" /> <!-- default -->
</selector>
当我使用选择器作为背景时,它不起作用:
<com.example.MyView style="@style/someStyle"
android:background="@drawable/item_selector_top" android:clickable="true"/>
但是,当我从内部xml中放入背景时,它确实有效:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/item_selector_top"/>
有谁知道为什么?
答案 0 :(得分:0)
您应该将父级状态传递给自定义视图的子级。使用:
android:duplicateParentState="true"
注意:如果您的自定义视图具有高级层次结构,例如A-&gt; B-&gt; C,并且您希望“C”视图处理状态行为,则应将duplicateParentState设置为“A”和“B”视图。