Android的框架布局单击收听者不工作
我有FrameLayout
与两个嵌套LinearLayout
s。我想onClickListener()
为FrameLayout
。搜索后,我得到了一个解决方案clickable="false"
。Android的框架布局单击收听者不工作
这是我的布局文件:
<FrameLayout
android:id="@+id/flOuter"
android:paddingLeft="@dimen/half_margin"
android:paddingRight="@dimen/half_margin"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:clickable="false"
android:gravity="center"
android:id="@+id/flAddIdProof"
android:background="@drawable/add_background"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:clickable="false"
android:id="@+id/ivIcon"
android:src="@drawable/ic_add_black_48dp"
android:background="@drawable/add_button_border"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:clickable="false"
android:id="@+id/llLinear"
android:alpha="0.5"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:enabled="false"
android:clickable="false"
android:drawablePadding="@dimen/half_margin"
android:drawableLeft="@drawable/ic_devices_black_24dp"
android:hint="Identity Proof"
android:inputType="none"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:enabled="false"
android:clickable="false"
android:drawableLeft="@drawable/ic_border_color_black_24dp"
android:hint="Identity Number"
android:drawablePadding="@dimen/half_margin"
android:inputType="none"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</FrameLayout>
这里是我的点击收听:
flOuter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(DeviceInMeeting.this, "detect", Toast.LENGTH_SHORT).show();
}
});
我不知道如何调试的听众的onClick,clickable="false"
是不是在我的情况下工作。
您错误地使用了它。尝试使用:
<FrameLayout
android:id="@+id/flOuter"
android:paddingLeft="@dimen/half_margin"
android:paddingRight="@dimen/half_margin"
android:layout_width="match_parent"
android:clickable="true"
android:layout_height="wrap_content">
// Other layouts there
</FrameLayout>
但我想可点击的框架布局,而不是线性布局 –
是的。我编辑了答案。检查它 –
不知道为什么,但你的解决方案不适合我... –
对于不希望被点击的字段,请向他们添加clickable=false
。 对于你想要点击事件的字段,请为它们添加clickable=true
。
这里要记住的一件事是,如果您的子元素包含一些可点击的元素(如按钮和edittexts),然后您想要在父布局上获得点击事件,则将可点击的false添加到子元素,并向父元素添加true。
尝试下面的代码片段实现android:clickable="true"
为FrameLayout
<FrameLayout
android:id="@+id/flOuter"
android:clickable="true"
android:paddingLeft="@dimen/half_margin"
android:paddingRight="@dimen/half_margin"
android:layout_width="match_parent"
android:layout_height="wrap_content">
和其他嵌套布局添加android:clickable="false"
。
<LinearLayout
android:id="@+id/flOuter"
android:clickable="false" />
您需要设置OnTouchListener
而不是onClickListener。在onTouch
方法中,您可以决定是否将触摸事件传递给儿童(通过返回false)或使用事件。
在你的情况下,你应该做你的逻辑,并返回true。
重复:https://stackoverflow.com/q/37698640/1531971 – jdv