这是我的Snackbar代码:
Snackbar.make(viewHolder.productView, "Some Text Here ..", Snackbar.LENGTH_SHORT)
.setAction("I want be a icon here instead TEXT", new View.OnClickListener() {
@Override
public void onClick(View v) {
// Perform anything for the action selected
}
})
.show();
Run Code Online (Sandbox Code Playgroud)
反正有没有添加图标而不是文字.setAction?
我知道谷歌建议不要在Snackbar中使用图标,但我想使用它.
我想实现最新设计支持库中包含的新Snackbar,但它的提供方式似乎与我的反直觉相比,而且我认为很多其他人使用它.
当用户执行重要操作时,我希望允许他们通过Snackbar撤消它,但似乎没有办法检测它何时被解除以执行操作.我有意义的做法如下:
但是因为我没有看到任何可访问的OnDismissListener,所以我必须:
我真的想避免不得不对数据库进行两次调用,只需在应用程序知道它是安全的时候发送一个(用户已经避免按"撤消").我注意到在第三方库中通过EventListener实现了这一点,但我真的很想坚持使用Google库.
android android-support-library android-design-library android-snackbar
我有一个使用fitsSystemWindows的应用程序能够在Navigation-和Status-Bar后面绘制背景 - 不幸的是,SnackBar似乎忽略了容器中的fitsSystemWindows = true.我将问题归结为这个最小的应用程序:

风格:
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:windowBackground">@color/accent_material_dark</item>
<item name="android:fitsSystemWindows">false</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">
<Button
android:id="@+id/button"
android:text="@string/hello_world"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
活动:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
Snackbar.make(v,"This Snackbar should fitSystemWindows",Snackbar.LENGTH_INDEFINITE).show();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
有人知道一些解决方法吗?
我发布了最小的应用程序来显示问题:https: //github.com/ligi/SnackBarFitsSystemWindowProblem
掌握新的android小吃吧,我试图将它设置为特定的y坐标.它似乎甚至不可能.
我已经尝试过获取快餐栏视图的父级,但是,没有什么可以做父母设置它的位置.
mSnackBar.getView().getParent();
Run Code Online (Sandbox Code Playgroud)
在挖掘实际的类时,有一个mView的实例,而mParent是私有的,无论如何都无法访问.
https://developer.android.com/reference/android/support/design/widget/Snackbar.html
我需要帮助.如何在样式应用程序中更改snackbar中文本的设计?代码的变化对我不感兴趣.我找到了以下代码.但这对我不起作用.这是为什么?我的主题来自@ style/Theme.AppCompat.Light.DarkActionBar".我非常感谢你的帮助.
<style name="TextAppearance.Design.Snackbar.Message" parent="android:TextAppearance">
<item name="android:textSize">10sp</item>
<item name="android:textColor">#FEFEFE</item>
</style>
<style name="TextAppearance.Design.Snackbar.Action" parent="android:TextAppearance">
<item name="android:textSize">16sp</item>
<item name="android:textColor">#FEFEFE</item>
</style>
Run Code Online (Sandbox Code Playgroud) android styles android-snackbar material-components material-components-android
如果我连续多次调用快餐栏,则只显示最后一个零食栏项目.
例如,使用下面的代码,仅显示第3项.对于第1项和第2项,似乎忽略了Snackbar.LENGTH_LONG(并设置为零?).
Snackbar.make(view, "Item 1", Snackbar.LENGTH_LONG).show();
Snackbar.make(view, "Item 2", Snackbar.LENGTH_LONG).show();
Snackbar.make(view, "Item 3", Snackbar.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)
但是在谷歌文档中,我看到可以对消息进行排队.
Run Code Online (Sandbox Code Playgroud)public boolean isShownOrQueued () Returns whether this Snackbar is currently being shown, or is queued to be shown next.
那么我们如何实际排队小吃店呢?
我在我的应用程序中使用小吃栏和FAB同一页,每当Snackbar显示浮动操作按钮不上升.
我使用第三方库attachToListView工作正常
import com.melnykov.fab.FloatingActionButton;
Run Code Online (Sandbox Code Playgroud)如果我使用默认库"无法解析attachToListView"
import android.support.design.widget.FloatingActionButton;
Run Code Online (Sandbox Code Playgroud)
我的需要:
attachToListView应该工作(当Listview向下滚动FAB时将消失).
每当Snackbar显示浮动操作按钮时应该上升.
帮帮我如何解决这个问题.
编辑:1
我删除了第三方库添加了默认导入(导入android.support.design.widget.FloatingActionButton),FAB正在上升但是Attachtolistivew没有解决.
编辑:2
我使用Listview在我的活动中,使用FAB和Snackbar.所以我需要像FAB一样的两个选项在Snackbar打开时以及当Listview向下滚动时应该隐藏FAB.
我的SnackBar代码:
Snackbar snack = Snackbar.make(fab1, " Successfully ...!",Snackbar.LENGTH_SHORT);
View snackbarView = snack.getView();
snackbarView.setBackgroundColor(Color.parseColor("#f44336"));
snack.show();
Run Code Online (Sandbox Code Playgroud)
Main.java
import com.melnykov.fab.FloatingActionButton;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fabview);
fab1 = (FloatingActionButton) findViewById(R.id.fab);
fab1.setShadow(true);
//fab.attachToListView(provider_service_list);
//FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab1.attachToListView(listViewData, new ScrollDirectionListener()
{
@Override
public void onScrollDown() {
Log.d("ListViewFragment", "onScrollDown()"); …Run Code Online (Sandbox Code Playgroud) 迁移项目或在已迁移的分支之间切换时,Android Studio无法构建项目,因为它无法找到该android.support.design.widget.Snackbar程序包.删除了支持/设计包,但迁移表未列出此组件的正确新包.
我通过以下代码构建了snackbar:
Snackbar sb = Snackbar.make(drawer, "message", Snackbar.LENGTH_LONG)
.setAction("action", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
Run Code Online (Sandbox Code Playgroud)
现在我想更改消息和操作按钮的字体,但找不到任何解决方案,怎么做?
android ×10
android-snackbar ×10
snackbar ×2
android-view ×1
androidx ×1
material-components-android ×1
styles ×1