Activity 启动时如何显示 Snackbar?
How to show Snackbar when Activity starts?
我想在 activity 开始时显示 android Snackbar
(android.support.design.widget.Snackbar)
就像我们显示 Toast
一样。
但问题是我们在创建 Snackbar
时必须指定父布局,如下所示:
Snackbar.make(parentlayout, "This is main activity", Snackbar.LENGTH_LONG)
.setAction("CLOSE", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
})
.setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
.show();
当我们在 activity 的开头显示 Snackbar
且没有任何点击事件时,如何提供父布局(如果是点击事件,我们可以轻松传递父视图)?
只需指向 Activity's
XML 内的任何 View
。例如,您可以为根视图组指定一个 id,然后使用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
View parentLayout = findViewById(android.R.id.content);
Snackbar.make(parentLayout, "This is main activity", Snackbar.LENGTH_LONG)
.setAction("CLOSE", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
})
.setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
.show();
//Other stuff in OnCreate();
}
call this method in onCreate
Snackbar snack = Snackbar.make(
(((Activity) context).findViewById(android.R.id.content)),
message + "", Snackbar.LENGTH_SHORT);
snack.setDuration(Snackbar.LENGTH_INDEFINITE);//change Duration as you need
//snack.setAction(actionButton, new View.OnClickListener());//add your own listener
View view = snack.getView();
TextView tv = (TextView) view
.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);//change textColor
TextView tvAction = (TextView) view
.findViewById(android.support.design.R.id.snackbar_action);
tvAction.setTextSize(16);
tvAction.setTextColor(Color.WHITE);
snack.show();
你可以试试这个库。这是 android 默认小吃店的包装器。 https://github.com/ChathuraHettiarachchi/CSnackBar
Snackbar.with(this,null)
.type(Type.SUCCESS)
.message("Profile updated successfully!")
.duration(Duration.SHORT)
.show();
这包含多种类型的小吃店,甚至还有一个自定义视图集成小吃店
直到现在,我自己都无法显示 Snackbar。
这是显示 Snackbar 的最简单方法。要将其显示为 Main Activity 开始,只需将这两行放入 OnCreate()
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "Welcome To Main Activity", Snackbar.LENGTH_LONG);
snackbar.show();
P.S。只需确保您已导入 Android 设计支持。(如问题中所述)。
对于 Kotlin,
Snackbar.make(findViewById(android.R.id.content), message, Snackbar.LENGTH_SHORT).show()
Try this
Snackbar.make(findViewById(android.R.id.content), "Got the Result", Snackbar.LENGTH_LONG)
.setAction("Submit", mOnClickListener)
.setActionTextColor(Color.RED)
.show();
显示小吃店的 utils 函数
fun showSnackBar(activity: Activity, message: String, action: String? = null,
actionListener: View.OnClickListener? = null, duration: Int = Snackbar.LENGTH_SHORT) {
val snackBar = Snackbar.make(activity.findViewById(android.R.id.content), message, duration)
.setBackgroundColor(Color.parseColor("#CC000000")) // todo update your color
.setTextColor(Color.WHITE)
if (action != null && actionListener!=null) {
snackBar.setAction(action, actionListener)
}
snackBar.show()
}
在 Activity
中使用的示例
showSnackBar(this, "No internet")
showSnackBar(this, "No internet", duration = Snackbar.LENGTH_LONG)
showSnackBar(activity, "No internet", "OK", View.OnClickListener {
// handle click
})
在 Fragment 中使用的示例
showSnackBar(getActivity(), "No internet")
希望对您有所帮助
只需在onCreate中使用以下代码即可完成。通过使用 android 的默认布局
Snackbar.make(findViewById(android.R.id.content),"Your Message",Snackbar.LENGTH_LONG).show();
您还可以为所有活动定义一个超级 class 并在父 activity 中找到一次视图。
例如
AppActivity.java :
public class AppActivity extends AppCompatActivity {
protected View content;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
changeLanguage("fa");
content = findViewById(android.R.id.content);
}
}
你的零食在你的应用中的每个 activity 中看起来都是这样的:
Snackbar.make(content, "hello every body", Snackbar.LENGTH_SHORT).show();
为了性能更好,您必须为每个 activity 查找一次视图。
显示一些文本的简单方法:
Snackbar.make(view, "Sample Text", Snackbar.LENGTH_SHORT).show();
并使用按钮显示文本:
Snackbar.make(view, "Sample Text", Snackbar.LENGTH_SHORT).setAction("Ok", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
}).show();
对于那些在项目中使用 data binding
的开发者。
Snackbar.make(binding.getRoot(), "This is your text", Snackbar.LENGTH_LONG)
.setAction("CLOSE", view -> {
//close
})
.setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
.show();
我想在 activity 开始时显示 android Snackbar
(android.support.design.widget.Snackbar)
就像我们显示 Toast
一样。
但问题是我们在创建 Snackbar
时必须指定父布局,如下所示:
Snackbar.make(parentlayout, "This is main activity", Snackbar.LENGTH_LONG)
.setAction("CLOSE", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
})
.setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
.show();
当我们在 activity 的开头显示 Snackbar
且没有任何点击事件时,如何提供父布局(如果是点击事件,我们可以轻松传递父视图)?
只需指向 Activity's
XML 内的任何 View
。例如,您可以为根视图组指定一个 id,然后使用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
View parentLayout = findViewById(android.R.id.content);
Snackbar.make(parentLayout, "This is main activity", Snackbar.LENGTH_LONG)
.setAction("CLOSE", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
})
.setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
.show();
//Other stuff in OnCreate();
}
call this method in onCreate
Snackbar snack = Snackbar.make(
(((Activity) context).findViewById(android.R.id.content)),
message + "", Snackbar.LENGTH_SHORT);
snack.setDuration(Snackbar.LENGTH_INDEFINITE);//change Duration as you need
//snack.setAction(actionButton, new View.OnClickListener());//add your own listener
View view = snack.getView();
TextView tv = (TextView) view
.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.WHITE);//change textColor
TextView tvAction = (TextView) view
.findViewById(android.support.design.R.id.snackbar_action);
tvAction.setTextSize(16);
tvAction.setTextColor(Color.WHITE);
snack.show();
你可以试试这个库。这是 android 默认小吃店的包装器。 https://github.com/ChathuraHettiarachchi/CSnackBar
Snackbar.with(this,null)
.type(Type.SUCCESS)
.message("Profile updated successfully!")
.duration(Duration.SHORT)
.show();
这包含多种类型的小吃店,甚至还有一个自定义视图集成小吃店
直到现在,我自己都无法显示 Snackbar。
这是显示 Snackbar 的最简单方法。要将其显示为 Main Activity 开始,只需将这两行放入 OnCreate()
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "Welcome To Main Activity", Snackbar.LENGTH_LONG);
snackbar.show();
P.S。只需确保您已导入 Android 设计支持。(如问题中所述)。
对于 Kotlin,
Snackbar.make(findViewById(android.R.id.content), message, Snackbar.LENGTH_SHORT).show()
Try this
Snackbar.make(findViewById(android.R.id.content), "Got the Result", Snackbar.LENGTH_LONG)
.setAction("Submit", mOnClickListener)
.setActionTextColor(Color.RED)
.show();
显示小吃店的 utils 函数
fun showSnackBar(activity: Activity, message: String, action: String? = null,
actionListener: View.OnClickListener? = null, duration: Int = Snackbar.LENGTH_SHORT) {
val snackBar = Snackbar.make(activity.findViewById(android.R.id.content), message, duration)
.setBackgroundColor(Color.parseColor("#CC000000")) // todo update your color
.setTextColor(Color.WHITE)
if (action != null && actionListener!=null) {
snackBar.setAction(action, actionListener)
}
snackBar.show()
}
在 Activity
中使用的示例 showSnackBar(this, "No internet")
showSnackBar(this, "No internet", duration = Snackbar.LENGTH_LONG)
showSnackBar(activity, "No internet", "OK", View.OnClickListener {
// handle click
})
在 Fragment 中使用的示例
showSnackBar(getActivity(), "No internet")
希望对您有所帮助
只需在onCreate中使用以下代码即可完成。通过使用 android 的默认布局
Snackbar.make(findViewById(android.R.id.content),"Your Message",Snackbar.LENGTH_LONG).show();
您还可以为所有活动定义一个超级 class 并在父 activity 中找到一次视图。
例如
AppActivity.java :
public class AppActivity extends AppCompatActivity {
protected View content;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
changeLanguage("fa");
content = findViewById(android.R.id.content);
}
}
你的零食在你的应用中的每个 activity 中看起来都是这样的:
Snackbar.make(content, "hello every body", Snackbar.LENGTH_SHORT).show();
为了性能更好,您必须为每个 activity 查找一次视图。
显示一些文本的简单方法:
Snackbar.make(view, "Sample Text", Snackbar.LENGTH_SHORT).show();
并使用按钮显示文本:
Snackbar.make(view, "Sample Text", Snackbar.LENGTH_SHORT).setAction("Ok", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
}).show();
对于那些在项目中使用 data binding
的开发者。
Snackbar.make(binding.getRoot(), "This is your text", Snackbar.LENGTH_LONG)
.setAction("CLOSE", view -> {
//close
})
.setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
.show();