当Activity启动时如何显示Snackbar?

6 浏览
0 Comments

当Activity启动时如何显示Snackbar?

我想在活动开始时显示Android Snackbar (android.support.design.widget.Snackbar),就像我们展示Toast一样。\n但问题是,我们在创建Snackbar时必须指定父布局,就像这样:\n

Snackbar.make(parentlayout, "这是主活动", Snackbar.LENGTH_LONG)
            .setAction("关闭", new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                }
            })
            .setActionTextColor(getResources().getColor(android.R.color.holo_red_light ))
            .show();

\n在活动开始时如何给予父布局,而不需要任何点击事件(如果是点击事件,我们可以很容易地传递父视图)?

0
0 Comments

问题的出现的原因:在Activity启动时,需要显示一个Snackbar。

解决方法:使用Snackbar的make()方法创建一个Snackbar对象,并设置显示的内容、显示时长等参数,然后调用show()方法显示Snackbar。

具体代码如下:

Snackbar.make(findViewById(android.R.id.content), "Got the Result", Snackbar.LENGTH_LONG)
        .setAction("Submit", mOnClickListener)
        .setActionTextColor(Color.RED)
        .show();

以上代码中,使用findViewById(android.R.id.content)获取当前Activity的根布局,然后调用Snackbar的make()方法创建一个Snackbar对象,传入根布局和要显示的内容。接着可以使用链式调用来设置Snackbar的其他属性,比如设置显示时长、设置操作按钮及其点击事件等。最后调用show()方法显示Snackbar即可。

注意:上述代码中的mOnClickListener是一个点击事件的监听器,需要根据实际情况进行定义和实现。

0
0 Comments

Snackbar是一种轻量级的用户提示工具,用于在屏幕底部显示短暂的信息。在使用Snackbar时,有用户提到遇到了一些问题,直到现在才能正确显示Snackbar。该问题的解决方法如下:

在活动启动时显示Snackbar的最简单方法是在OnCreate()方法中添加以下两行代码:

Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content), "Welcome To Main Activity", Snackbar.LENGTH_LONG);
snackbar.show();

需要确保已经导入了Android Design Support库(如问题中提到的)。

对于Kotlin语言,可以使用以下代码显示Snackbar:

Snackbar.make(findViewById(android.R.id.content), message, Snackbar.LENGTH_SHORT).show()

0
0 Comments

当Activity启动时,如何显示Snackbar?

问题原因:

- 代码中使用了Snackbar来显示一个消息,但是找不到合适的View来显示Snackbar。

解决方法:

1. 在Activity的XML布局中为根ViewGroup设置一个id,例如:


2. 在代码中使用findViewById()方法找到根View,例如:

View parentLayout = findViewById(R.id.root_view);

3. 将parentLayout作为Snackbar的第一个参数传递,例如:

Snackbar.make(parentLayout, "This is main activity", Snackbar.LENGTH_LONG)
    .setAction("CLOSE", new View.OnClickListener() {
        public void onClick(View view) {
        } 
    }) 
    .setActionTextColor(getResources().getColor(android.R.color.holo_red_light))
    .show();

4. 如果在Android 5.0或更低版本中抛出了NullPointerException,可能是布局中存在错误。可以尝试以下解决方法:

- 确保布局中的id与其他元素不重复。

- 如果使用了Fragment,应该使用rootView.findViewById(R.id.your_parent_view)来获取父View。

其他注意事项:

- 根View也可以使用findViewById(android.R.id.content)来获取。

- 如果没有使用CoordinatorLayout作为根View,可能会抛出NullPointerException。

- 不要忘记在build.gradle文件中添加依赖:'com.android.support:design:27.0.0'。

- getColor()方法在API 23中已被弃用,应该使用ContextCompat.getColor(context, R.color.color_name)方法代替。

0