隐藏和显示后浮动操作按钮图标图像不显示
Floating Action Button icon image not showing after hide and show
您好,我正在开发一个带有浮动操作按钮的 android 应用程序。
第一次FAB图标显示图标图像。当我隐藏和显示图标后,当我单击 FAB 图标时图像将是空白的
这是用于隐藏 FAB 的代码
mainScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
// previousScrollY this variable is define in your Activity or Fragment
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Log.i(TAG, "onScrollChanged: scrollview position " + mainScrollView.getScrollY() + " " +
previousScrollY + " " +
mainScrollView.getChildAt(0).getHeight());
if (mainScrollView.getScrollY() > previousScrollY) {
fab.hide();
} else if (mainScrollView.getScrollY() < previousScrollY) {
fab.show();
}
if (mainScrollView.getScrollY() >= mainScrollView.getChildAt(0).getHeight()) {
previousScrollY = mainScrollView.getChildAt(0).getHeight();
} else if (mainScrollView.getScrollY() < 0) {
previousScrollY = 0;
} else {
previousScrollY = mainScrollView.getScrollY();
}
}
}, 200);
}
});
向下滚动 FAB 图标将隐藏,向上滚动 FAB 图标将显示。
这是 FAB setOnClicklistener 的代码
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (sheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) {
sheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
fab.setImageResource(R.drawable.ic_close);
} else {
sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
fab.setImageResource(R.drawable.ic_filter);
}
}
});
这是在滚动和第一次加载之前出现的 fab 图标图像
这是滚动并点击后的图像。
您的代码看起来不错。在我看来,唯一可能导致这种行为的是 onScrollChanged
中的延迟处理程序。请转到全局 FloatingActionButtonfab
的声明并将其设为 static
。看看有没有帮助。
PS:如果确实没有帮助,请尝试将 fab.hide()
替换为 fab.setVisibility(View.INVISIBLE)
,将 fab.show()
替换为 fab.setVisibility(View.VISIBLE)
。
我知道你发布这篇文章已经很久了,但我遇到了同样的问题。我通过在单击后对 fab 执行 hide() 和 show() 来解决它。 (在我的特殊情况下,我在 onClick 中更改了 drawable。更改 drawable 后执行 hide() 和 show() 解决了问题)。
您的代码应如下所示:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (sheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) {
sheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
fab.setImageResource(R.drawable.ic_close);
} else {
sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
fab.setImageResource(R.drawable.ic_filter);
}
fab.hide();
fab.show();
}
});
确实面临与依赖性相同的问题 com.google.android.material:material:1.0.0
。将版本升级到 1.1.0-alpha3
解决了这个问题。
使用这个
fab.setVisibility(View.VISIBLE); && fab.setVisibility(View.GONE);
而不是这个
fab.show(); && fab.hide();
我在onCreateView中调用函数hide and show解决了
fab.hide();
fab.show();
您好,我正在开发一个带有浮动操作按钮的 android 应用程序。
第一次FAB图标显示图标图像。当我隐藏和显示图标后,当我单击 FAB 图标时图像将是空白的
这是用于隐藏 FAB 的代码
mainScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
// previousScrollY this variable is define in your Activity or Fragment
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Log.i(TAG, "onScrollChanged: scrollview position " + mainScrollView.getScrollY() + " " +
previousScrollY + " " +
mainScrollView.getChildAt(0).getHeight());
if (mainScrollView.getScrollY() > previousScrollY) {
fab.hide();
} else if (mainScrollView.getScrollY() < previousScrollY) {
fab.show();
}
if (mainScrollView.getScrollY() >= mainScrollView.getChildAt(0).getHeight()) {
previousScrollY = mainScrollView.getChildAt(0).getHeight();
} else if (mainScrollView.getScrollY() < 0) {
previousScrollY = 0;
} else {
previousScrollY = mainScrollView.getScrollY();
}
}
}, 200);
}
});
向下滚动 FAB 图标将隐藏,向上滚动 FAB 图标将显示。
这是 FAB setOnClicklistener 的代码
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (sheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) {
sheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
fab.setImageResource(R.drawable.ic_close);
} else {
sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
fab.setImageResource(R.drawable.ic_filter);
}
}
});
这是在滚动和第一次加载之前出现的 fab 图标图像
这是滚动并点击后的图像。
您的代码看起来不错。在我看来,唯一可能导致这种行为的是 onScrollChanged
中的延迟处理程序。请转到全局 FloatingActionButtonfab
的声明并将其设为 static
。看看有没有帮助。
PS:如果确实没有帮助,请尝试将 fab.hide()
替换为 fab.setVisibility(View.INVISIBLE)
,将 fab.show()
替换为 fab.setVisibility(View.VISIBLE)
。
我知道你发布这篇文章已经很久了,但我遇到了同样的问题。我通过在单击后对 fab 执行 hide() 和 show() 来解决它。 (在我的特殊情况下,我在 onClick 中更改了 drawable。更改 drawable 后执行 hide() 和 show() 解决了问题)。
您的代码应如下所示:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (sheetBehavior.getState() != BottomSheetBehavior.STATE_EXPANDED) {
sheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
fab.setImageResource(R.drawable.ic_close);
} else {
sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
fab.setImageResource(R.drawable.ic_filter);
}
fab.hide();
fab.show();
}
});
确实面临与依赖性相同的问题 com.google.android.material:material:1.0.0
。将版本升级到 1.1.0-alpha3
解决了这个问题。
使用这个
fab.setVisibility(View.VISIBLE); && fab.setVisibility(View.GONE);
而不是这个
fab.show(); && fab.hide();
我在onCreateView中调用函数hide and show解决了
fab.hide();
fab.show();