ConstraintLayout 不处理点击
ConstraintLayout not handling clicks
我在 FrameLayout
:
中有一个空的 ConstraintLayout
(我将其用作叠加层)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.home.HomeFragment">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000"
android:clickable="true"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</FrameLayout>
我附加了一个事件侦听器:
public class HomeFragment extends Fragment implements View.OnClickListener {
...
public void onClick(View v) {
switch(v.getId()) {
case R.id.overlay:
// Do something
break;
}
}
}
问题是当点击覆盖时,Some code here
没有被执行。删除 android:clickable
和 android:focusable
没有帮助。这个问题有解决办法吗?
findViewById(R.id.overlay).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Do something
}
}
这将完成工作。我在您的代码中没有看到您实际将 onclicklistener 设置为叠加视图的位置。
在您的 oncreate
方法中添加:
setOnClickListener(this)
并执行以下操作:
public class MainActivity extends Appcomatactivity implements View.OnClickListner
你需要像dis
ConstraintLayout parent = findViewById(R.id.parent);
parent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
我在 FrameLayout
:
ConstraintLayout
(我将其用作叠加层)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.home.HomeFragment">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80000000"
android:clickable="true"
android:focusable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</FrameLayout>
我附加了一个事件侦听器:
public class HomeFragment extends Fragment implements View.OnClickListener {
...
public void onClick(View v) {
switch(v.getId()) {
case R.id.overlay:
// Do something
break;
}
}
}
问题是当点击覆盖时,Some code here
没有被执行。删除 android:clickable
和 android:focusable
没有帮助。这个问题有解决办法吗?
findViewById(R.id.overlay).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Do something
}
}
这将完成工作。我在您的代码中没有看到您实际将 onclicklistener 设置为叠加视图的位置。
在您的 oncreate
方法中添加:
setOnClickListener(this)
并执行以下操作:
public class MainActivity extends Appcomatactivity implements View.OnClickListner
你需要像dis
ConstraintLayout parent = findViewById(R.id.parent);
parent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});