在没有 CoordinatorLayout 的情况下显示 Snackbar
Display Snackbar without CoordinatorLayout
我已经使用 CoordinatorLayout 显示了 Snackbar,但在某些布局中我没有使用 CoordinatorLayout 布局,我想显示 snackbar 但遇到了问题。
我试过以下方法在没有 CoordinatorLayout 的情况下实现 snackbar 但它会显示以下结果。
Snackbar.make(getActivity().getWindow().getDecorView().getRootView(), "Testing Snackbar", Snackbar.LENGTH_LONG).show();
使用 android 8.0 Oreo
进行测试
有没有不用CoordinatorLayout实现Snackbar的方法?
提前致谢。
代码
public class FirstFragment extends Fragment {
RelativeLayout rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_first, container, false);
Log.e("onCreateView", "onCreateView");
rootView = (RelativeLayout)view.findViewById(R.id.rootView);
setSnackBar(rootView, "Testing with answered");
return view;
}
public static void setSnackBar(View coordinatorLayout, String snackTitle) {
Snackbar snackbar = Snackbar.make(coordinatorLayout, snackTitle, Snackbar.LENGTH_SHORT);
snackbar.show();
View view = snackbar.getView();
TextView txtv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
txtv.setGravity(Gravity.CENTER_HORIZONTAL);
}
}
public static void setSnackBar(View root, String snackTitle) {
Snackbar snackbar = Snackbar.make(root, snackTitle, Snackbar.LENGTH_SHORT);
snackbar.show();
View view = snackbar.getView();
TextView txtv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
txtv.setGravity(Gravity.CENTER_HORIZONTAL);
}
只需调用上述方法并传递任何父布局,例如LinearLayout
、RelativeLayout
或ScrollView
,例如:
setSnackBar(layout,"This is your SnackBar"); //here "layout" is your parentView in a layout
不要忘记使用 findViewById()
找到您的视图。
试试这段简单的代码。使用了 android 框架本身的虚拟视图
Snackbar.make(findViewById(android.R.id.content),"Your Text Here",Snackbar.LENGTH_SHORT).show();
正如其他人建议的那样,最好的解决方案是通过前面提到的方法。我会添加选项来显示带有按钮的 SnackBar 以关闭 SnackBar。当您想让用户有时间阅读您的消息,然后确认您的应用程序您的用户阅读了您的消息时,这会很有用。
public void setSnackBar(View root, String textToDisplay) {
Snackbar snackbar = Snackbar.make(root, textToDisplay, Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View view) {
snackbar.dismiss();
//your other action after user hit the "OK" button
}
});
snackbar.show();
使用 view CoordinatorLayout 的实例:
View view = findViewById(android.R.id.content);
Snackbar snackbar = Snackbar.make(view, "your text", Snackbar.LENGTH_SHORT);
snackbar.show();
我已经使用 CoordinatorLayout 显示了 Snackbar,但在某些布局中我没有使用 CoordinatorLayout 布局,我想显示 snackbar 但遇到了问题。
我试过以下方法在没有 CoordinatorLayout 的情况下实现 snackbar 但它会显示以下结果。
Snackbar.make(getActivity().getWindow().getDecorView().getRootView(), "Testing Snackbar", Snackbar.LENGTH_LONG).show();
使用 android 8.0 Oreo
进行测试有没有不用CoordinatorLayout实现Snackbar的方法?
提前致谢。
代码
public class FirstFragment extends Fragment {
RelativeLayout rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_first, container, false);
Log.e("onCreateView", "onCreateView");
rootView = (RelativeLayout)view.findViewById(R.id.rootView);
setSnackBar(rootView, "Testing with answered");
return view;
}
public static void setSnackBar(View coordinatorLayout, String snackTitle) {
Snackbar snackbar = Snackbar.make(coordinatorLayout, snackTitle, Snackbar.LENGTH_SHORT);
snackbar.show();
View view = snackbar.getView();
TextView txtv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
txtv.setGravity(Gravity.CENTER_HORIZONTAL);
}
}
public static void setSnackBar(View root, String snackTitle) {
Snackbar snackbar = Snackbar.make(root, snackTitle, Snackbar.LENGTH_SHORT);
snackbar.show();
View view = snackbar.getView();
TextView txtv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
txtv.setGravity(Gravity.CENTER_HORIZONTAL);
}
只需调用上述方法并传递任何父布局,例如LinearLayout
、RelativeLayout
或ScrollView
,例如:
setSnackBar(layout,"This is your SnackBar"); //here "layout" is your parentView in a layout
不要忘记使用 findViewById()
找到您的视图。
试试这段简单的代码。使用了 android 框架本身的虚拟视图
Snackbar.make(findViewById(android.R.id.content),"Your Text Here",Snackbar.LENGTH_SHORT).show();
正如其他人建议的那样,最好的解决方案是通过前面提到的方法。我会添加选项来显示带有按钮的 SnackBar 以关闭 SnackBar。当您想让用户有时间阅读您的消息,然后确认您的应用程序您的用户阅读了您的消息时,这会很有用。
public void setSnackBar(View root, String textToDisplay) {
Snackbar snackbar = Snackbar.make(root, textToDisplay, Snackbar.LENGTH_INDEFINITE);
snackbar.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View view) {
snackbar.dismiss();
//your other action after user hit the "OK" button
}
});
snackbar.show();
使用 view CoordinatorLayout 的实例:
View view = findViewById(android.R.id.content);
Snackbar snackbar = Snackbar.make(view, "your text", Snackbar.LENGTH_SHORT);
snackbar.show();