FAB透明层不遮挡父层
FAB transparent layer does not block the parent layer
我在使用 Clans FloatingActionButton 时遇到问题。我需要添加一个透明层来阻挡父层。我需要的效果类似于Google收件箱。
所以在我的例子中我有这个序列:
1) 点击项目 3
2) 点击 fab
3) 当我点击透明层时,ListView 中的项目被点击。
我尝试使用以下方式阻止点击事件透明层:
final FloatingActionMenu menu1 = (FloatingActionMenu) findViewById(R.id.menu1);
menu1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menu1.close(true);
}
});
所以使用这段代码,当我单击透明层时,fab 菜单关闭(这没问题),但相同的单击侦听器阻止了 listView 上的单击事件。
我尝试了不同的方法来解决这个问题,但我发现的唯一方法是以编程方式调整背景大小。这不是一个好的解决方案,因为效果不好。
几个小时后,我会将演示和源代码上传到 github,但希望有人能帮我出点主意。谢谢
已编辑
我已经从 Github 下载了您的项目并亲自尝试了代码并解决了问题。
正如 Google 应用程序在收件箱中所展示的那样,它对我来说效果很好。您只需更改一小部分代码。
menu1.setOnMenuToggleListener(new FloatingActionMenu.OnMenuToggleListener() {
@Override
public void onMenuToggle(boolean opened) {
if (opened) {
menu1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menu1.close(true);
menu1.setClickable(false);
}
});
} else {
Toast.makeText(getApplicationContext(), "Close", Toast.LENGTH_SHORT).show();
}
}
});
希望能帮到你。
我在使用 Clans FloatingActionButton 时遇到问题。我需要添加一个透明层来阻挡父层。我需要的效果类似于Google收件箱。 所以在我的例子中我有这个序列: 1) 点击项目 3
2) 点击 fab
3) 当我点击透明层时,ListView 中的项目被点击。
我尝试使用以下方式阻止点击事件透明层:
final FloatingActionMenu menu1 = (FloatingActionMenu) findViewById(R.id.menu1);
menu1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menu1.close(true);
}
});
所以使用这段代码,当我单击透明层时,fab 菜单关闭(这没问题),但相同的单击侦听器阻止了 listView 上的单击事件。 我尝试了不同的方法来解决这个问题,但我发现的唯一方法是以编程方式调整背景大小。这不是一个好的解决方案,因为效果不好。
几个小时后,我会将演示和源代码上传到 github,但希望有人能帮我出点主意。谢谢
已编辑
我已经从 Github 下载了您的项目并亲自尝试了代码并解决了问题。
正如 Google 应用程序在收件箱中所展示的那样,它对我来说效果很好。您只需更改一小部分代码。
menu1.setOnMenuToggleListener(new FloatingActionMenu.OnMenuToggleListener() {
@Override
public void onMenuToggle(boolean opened) {
if (opened) {
menu1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
menu1.close(true);
menu1.setClickable(false);
}
});
} else {
Toast.makeText(getApplicationContext(), "Close", Toast.LENGTH_SHORT).show();
}
}
});
希望能帮到你。