嗨,我有一个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空值应该在其他函数中。
答案 0 :(得分:1)
在函数showFABMenu()
中,此行删除了fab_house
的{{1}}:
onClickListener()
删除此行以解决问题
fab_house.setOnClickListener(null);
没有定义fab_Building
答案 1 :(得分:0)
您已在show fabMenu中将fab_house onClick方法设置为null。将其设置为此并实现重写onClick方法或仅删除该行