我正在创建一个在toggle-button
中具有toolbar
的{{1}}的应用程序。问题是我希望appbar
缩回当我在屏幕上的任何地方按时,它会向上移动,但是它无法检测到屏幕上的点击。
修改
下拉列表如下所示:
https://i.imgur.com/dFg0L3v.gif
现在,我只是隐藏并显示该栏,而不是为了简单起见对其设置动画。
我尝试在打开appbar
时将OnClickListener
设置为基础布局(coordinatorlayout),但未检测到任何点击。
代码
我正在使用XML标记来检测应用栏是在单击时关闭还是打开,XML文件中的默认设置为“关”。
dropdown
我认为问题出在我在else-if语句中设置OnClickListener的事实,但是我不知道如何将OnClickListener设置为仅在下拉列表打开时才处于活动状态。有什么建议吗?
谢谢!
答案 0 :(得分:0)
我没有正确解决您的问题,但我知道将按钮设置为按条件是一种非常糟糕的做法。因此,首先,您可以在没有任何条件的情况下将这段代码移入onCreate()中:
cLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
yearBar.setVisibility(View.GONE);
yearBar.setTag("off");
Toast.makeText(getActivity(),"Click detected!", Toast.LENGTH_LONG).show();
}
});
现在,如果您想提供条件,则必须调用onClick。
答案 1 :(得分:0)
您可以声明一个Boolean
变量来保存dropDown的状态。在if语句之外设置onClick并检查其中的状态。
这是最简单的方法,但是您可以按以下方式使用视图的选择状态:
@Override
public void onClick(View v) {
if(v.selected()){
yearBar.setVisibility(View.GONE);
yearBar.setTag("off");
Toast.makeText(getActivity(),"Click detected!", Toast.LENGTH_LONG).show();
}
else{
//do somthing else
}
v.setSelected(!v.isSelected());
}
答案 2 :(得分:0)
您可以省略使用标记,因为已经可以使用视图可见性布尔值来代替了。
同样,也无需在菜单项的切换条件下添加for(var i=0; i< photos.length; i++){
for(var j=0; j< comments.length; j++){
if(photos[i].id == comments[j].photoTarget){
//I can't get this part to work
}
}
}
您可以将其正常放置在片段的onClickListener
您可以执行以下操作
onCreateView()