我在自定义视图上设置android:enabled="false"
,但它似乎对isEnabled()
属性没有任何影响。
这是一个简单的测试用例:
public class TestView extends View {
public TestView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint p = new Paint();
p.setTextAlign(Align.CENTER);
p.setTextSize(ViewUtils.dpToPx(this, 10));
canvas.drawText("Enabled = " + (isEnabled() ? "true" : "false"),
getWidth() / 2,
getHeight() / 2,
p);
}
}
和相应的XML:
<com.example.TestView
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@android:color/darker_gray"
android:enabled="false"
android:layout_width="100dp"
android:layout_height="100dp"/>
输出视图如下所示:
有人可以解释一下原因吗?
答案 0 :(得分:5)
据我所知,android:enabled
不是View
的属性,因为它不在文档中。
我认为没有办法通过XML布局文件修改isEnabled()
的返回值。 (除非为自定义视图定义自定义属性)
答案 1 :(得分:0)
也许这个答案来晚了
bills
中声明declare-styleable
<attr name="android:enabled" format="boolean"/>
TypedArray
isEnabled = typeArray.getBoolean(R.styleable.CunstomView_android_enabled, true)
答案 2 :(得分:0)
改用这个:
app:enabled="@{false}"