为什么我的浮动操作按钮 onclick 不起作用?
why is my Floating Action Button onclick not working?
您好,我有一个 FAB fab_main,它有一个 onclick,可以为其他 FAB 启用 onclick。现在 fab_main 的 onclick 起作用了,但是其他的根本不起作用,为什么?代码是一样的,不是吗?
已经尝试为他们取消 hide() 但这没有帮助...
我可能会尝试切换到支持库 fab,但如果那是问题所在 fab_main 的 onclick 将无法正常工作,对吗?
xml:
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floating_action_button_main"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:clickable="true"
app:srcCompat="@android:drawable/ic_input_add" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floating_action_button_house"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:clickable="true"
app:srcCompat="@android:drawable/ic_input_add" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floating_action_button_building"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:clickable="true"
app:srcCompat="@android:drawable/ic_input_add" />
java:
import com.google.android.material.floatingactionbutton.FloatingActionButton;
FloatingActionButton fab_main = findViewById(R.id.floating_action_button_main);
FloatingActionButton fab_house = findViewById(R.id.floating_action_button_house);
FloatingActionButton fab_Building = findViewById(R.id.floating_action_button_building);
//hides fabs
fab_house.hide();
fab_Building.hide();
//defines the main fab onclick
fab_main.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!isFABOpen){
showFABMenu();
}else{
closeFABMenu();
}
}
});
fab_house.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
closeFABMenu();
});
}
});
}
private void showFABMenu(){
FloatingActionButton fab_main = findViewById(R.id.floating_action_button_main);
FloatingActionButton fab_house = findViewById(R.id.floating_action_button_house);
FloatingActionButton fab_Building = findViewById(R.id.floating_action_button_building);
isFABOpen=true;
fab_house.setOnClickListener(null);
fab_Building.setOnClickListener(null);
fab_house.show();
fab_Building.show();
fab_house.animate().translationY(-getResources().getDimension(R.dimen.standard_62));
fab_Building.animate().translationY(-getResources().getDimension(R.dimen.standard_125));
}
private void closeFABMenu(){
FloatingActionButton fab_main = findViewById(R.id.floating_action_button_main);
FloatingActionButton fab_house = findViewById(R.id.floating_action_button_house);
FloatingActionButton fab_Building = findViewById(R.id.floating_action_button_building);
isFABOpen=false;
fab_house.animate().translationY(0);
fab_Building.animate().translationY(0);
fab_house.hide();
fab_Building.hide();
}
编辑:
我的错误,fab onclick nulls 应该在其他函数中...
在您的函数 showFABMenu()
中,此行删除 fab_house
的 onClickListener()
:
fab_house.setOnClickListener(null);
删除此行以解决问题
fab_Building
没有 onClickListener()
定义
您已在 show fabMenu 中将 fab_house onClick 方法设置为空。要么将其设置为此并实施重写 onClick 方法,要么只删除行
您好,我有一个 FAB fab_main,它有一个 onclick,可以为其他 FAB 启用 onclick。现在 fab_main 的 onclick 起作用了,但是其他的根本不起作用,为什么?代码是一样的,不是吗?
已经尝试为他们取消 hide() 但这没有帮助...
我可能会尝试切换到支持库 fab,但如果那是问题所在 fab_main 的 onclick 将无法正常工作,对吗?
xml:
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floating_action_button_main"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:clickable="true"
app:srcCompat="@android:drawable/ic_input_add" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floating_action_button_house"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:clickable="true"
app:srcCompat="@android:drawable/ic_input_add" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floating_action_button_building"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:clickable="true"
app:srcCompat="@android:drawable/ic_input_add" />
java:
import com.google.android.material.floatingactionbutton.FloatingActionButton;
FloatingActionButton fab_main = findViewById(R.id.floating_action_button_main);
FloatingActionButton fab_house = findViewById(R.id.floating_action_button_house);
FloatingActionButton fab_Building = findViewById(R.id.floating_action_button_building);
//hides fabs
fab_house.hide();
fab_Building.hide();
//defines the main fab onclick
fab_main.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!isFABOpen){
showFABMenu();
}else{
closeFABMenu();
}
}
});
fab_house.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
closeFABMenu();
});
}
});
}
private void showFABMenu(){
FloatingActionButton fab_main = findViewById(R.id.floating_action_button_main);
FloatingActionButton fab_house = findViewById(R.id.floating_action_button_house);
FloatingActionButton fab_Building = findViewById(R.id.floating_action_button_building);
isFABOpen=true;
fab_house.setOnClickListener(null);
fab_Building.setOnClickListener(null);
fab_house.show();
fab_Building.show();
fab_house.animate().translationY(-getResources().getDimension(R.dimen.standard_62));
fab_Building.animate().translationY(-getResources().getDimension(R.dimen.standard_125));
}
private void closeFABMenu(){
FloatingActionButton fab_main = findViewById(R.id.floating_action_button_main);
FloatingActionButton fab_house = findViewById(R.id.floating_action_button_house);
FloatingActionButton fab_Building = findViewById(R.id.floating_action_button_building);
isFABOpen=false;
fab_house.animate().translationY(0);
fab_Building.animate().translationY(0);
fab_house.hide();
fab_Building.hide();
}
编辑: 我的错误,fab onclick nulls 应该在其他函数中...
在您的函数 showFABMenu()
中,此行删除 fab_house
的 onClickListener()
:
fab_house.setOnClickListener(null);
删除此行以解决问题
fab_Building
没有 onClickListener()
定义
您已在 show fabMenu 中将 fab_house onClick 方法设置为空。要么将其设置为此并实施重写 onClick 方法,要么只删除行