我已经设置了FAB动画的修复高度和宽度。当设备屏幕分辨率很小时显示为大的问题。
以下设备屏幕分辨率看起来不错:
在代码段
下面FloatingActionButton fab, fab1, fab2, fab3;`
private boolean FAB_Status = false,
// Initilize FAB button
fab = (FloatingActionButton) getView().findViewById(R.id.fab);
fab1 = (FloatingActionButton) getView().findViewById(R.id.fab_1);
fab2 = (FloatingActionButton) getView().findViewById(R.id.fab_2);
fab3 = (FloatingActionButton) getView().findViewById(R.id.fab_3);
执行点击操作以在FAB中显示SubActionButton:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (FAB_Status == false) {
//Display FAB menu
expandFAB();
FAB_Status = true;
} else {
//Close FAB menu
hideFAB();
FAB_Status = false;
}
}
});
用于扩展FAB的用户定义方法:
private void expandFAB() {
//Floating Action Button 1
fab.setImageResource(R.drawable.ic_fab_click);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) fab1.getLayoutParams();
layoutParams.rightMargin += (int) (fab1.getWidth() * 1.7);
layoutParams.bottomMargin += (int) (fab1.getHeight() * 0.25);
fab1.setLayoutParams(layoutParams);
fab1.startAnimation(show_fab_1);
fab1.setClickable(true);
//Floating Action Button 3
FrameLayout.LayoutParams layoutParams2 = (FrameLayout.LayoutParams) fab2.getLayoutParams();
layoutParams2.rightMargin += (int) (fab2.getWidth() * 1.5);
layoutParams2.bottomMargin += (int) (fab2.getHeight() * 1.5);
fab2.setLayoutParams(layoutParams2);
fab2.startAnimation(show_fab_2);
fab2.setClickable(true);
//Floating Action Button 3
FrameLayout.LayoutParams layoutParams3 = (FrameLayout.LayoutParams) fab3.getLayoutParams();
layoutParams3.rightMargin += (int) (fab3.getWidth() * 0.25);
layoutParams3.bottomMargin += (int) (fab3.getHeight() * 1.7);
fab3.setLayoutParams(layoutParams3);
fab3.startAnimation(show_fab_3);
fab3.setClickable(true);
}
用于隐藏FAB的用户定义方法:
private void hideFAB() {
fab.setImageResource(R.drawable.ic_content_add);
//Floating Action Button 1
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) fab1.getLayoutParams();
layoutParams.rightMargin -= (int) (fab1.getWidth() * 1.7);
layoutParams.bottomMargin -= (int) (fab1.getHeight() * 0.25);
fab1.setLayoutParams(layoutParams);
fab1.startAnimation(hide_fab_1);
fab1.setClickable(false);
//Floating Action Button 2
if (expertStatus != null && expertStatus.equals("A")) {
FrameLayout.LayoutParams layoutParams2 = (FrameLayout.LayoutParams) fab2.getLayoutParams();
layoutParams2.rightMargin -= (int) (fab2.getWidth() * 1.5);
layoutParams2.bottomMargin -= (int) (fab2.getHeight() * 1.5);
fab2.setLayoutParams(layoutParams2);
fab2.startAnimation(hide_fab_2);
fab2.setClickable(false);
}
//Floating Action Button 3
FrameLayout.LayoutParams layoutParams3 = (FrameLayout.LayoutParams) fab3.getLayoutParams();
layoutParams3.rightMargin -= (int) (fab3.getWidth() * 0.25);
layoutParams3.bottomMargin -= (int) (fab3.getHeight() * 1.7);
fab3.setLayoutParams(layoutParams3);
fab3.startAnimation(hide_fab_3);
fab3.setClickable(false);
}
这是关于我已将高度和宽度设置为固定的问题,如
layoutParams3.rightMargin -= (int) (fab3.getWidth() * 0.25);
ayoutParams3.bottomMargin -= (int) (fab3.getHeight() * 1.7);
我想根据屏幕分辨率动态设置。