Java 如何使按钮单击功能被多次单击?
我正在创建一个包含主题和主题下的段落的应用程序 当用户单击主题时,它将段落设置为可见,再次单击时,它将段落设置为消失。它只能被点击一次,我怎样才能让它发生10次?不写函数10次 我已经尝试添加了rescreate();在b1.setTextColor下,它仅重新创建函数。我还为主题b2、b3、b4等提供了相同的功能。当单击所有主题并将可见性更改为可见时,用户按b1将其关闭,它会将所有其他主题的可见性设置为消失Java 如何使按钮单击功能被多次单击?,java,android,Java,Android,我正在创建一个包含主题和主题下的段落的应用程序 当用户单击主题时,它将段落设置为可见,再次单击时,它将段落设置为消失。它只能被点击一次,我怎样才能让它发生10次?不写函数10次 我已经尝试添加了rescreate();在b1.setTextColor下,它仅重新创建函数。我还为主题b2、b3、b4等提供了相同的功能。当单击所有主题并将可见性更改为可见时,用户按b1将其关闭,它会将所有其他主题的可见性设置为消失 final LinearLayout lb1 = findViewBy
final LinearLayout lb1 = findViewById(R.id.b_title1a);
final TextView b1 = findViewById(R.id.b_title1);
b1.setTextColor(getResources().getColor(R.color.colorPrimary));
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lb1.setVisibility(View.VISIBLE);
b1.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lb1.setVisibility(View.GONE);
b1.setTextColor(getResources().getColor(R.color.colorPrimary));
}
});
}
});
是否有方法重复该函数或如何循环该函数?
通过这种方式,用户可以保持活动状态,并尽可能多次打开和关闭主题
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lb1.setVisibility(View.VISIBLE);
b1.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lb1.setVisibility(View.GONE);
b1.setTextColor(getResources().getColor(R.color.colorPrimary));
recreate();
}
});
}
});
这是可行的,但代码并不干净,它会带来问题。发生的情况是:第一次单击主题时,您会显示段落,但随后您会覆盖该方法,使其隐藏。但是当你这么做的时候,你就失去了展示它的能力 您不需要在第一次单击后重写OnClick方法。使用if语句查看视图是否可见。如果是,就把它藏起来。如果没有,请展示它
final LinearLayout lb1 = findViewById(R.id.b_title1a);
final TextView b1 = findViewById(R.id.b_title1);
b1.setTextColor(getResources().getColor(R.color.colorPrimary));
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (lb1.getVisibility() == View.VISIBLE) {
lb1.setVisibility(View.GONE);
b1.setTextColor(getResources().getColor(R.color.colorPrimary));
} else {
lb1.setVisibility(View.VISIBLE);
b1.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
}
}
});
全局设置布尔标志
Flag = true;
然后单击按钮,如果标志为true,则表示单击按钮以显示段落,因此编写代码以显示段落,并将标志更改为false
下次单击按钮时,标志将为false,然后您可以执行代码来隐藏段落
b1.setOnClickListener(new View.OnClickListener(){
public void onClick (View v){
if (Flag) {
lb1.setVisibility(View.VISIBLE);
b1.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
} else {
lb1.setVisibility(View.GONE);
b1.setTextColor(getResources().getColor(R.color.colorPrimary));
}
}
}
我现在就去试试,谢谢代码的工作原理与我的基本相同,但它仍然不会使函数重复。我只能单击一次显示,单击一次隐藏。我想我可能误解了你的问题。你想重复是什么意思?是否希望仅单击一次即可多次显示和隐藏该主题?我希望用户能够在浏览活动的同时打开和关闭该主题。请重试,将v.getVisibility()更改为lb1.getVisibility(),因为我已更新了答案。无需为此使用标志。还有其他方法可以检查视图的可见性。这样,如果任何其他内容更改了视图的可见性,则必须记住更改标志,否则代码将无法正常工作。此标志只会在代码中出现。