注意:我看到了已经存在的题目标题为“将 Snackbar 的操作对齐到右侧”,但这并没有回答我的问题。
根据 Material Design 规范,在 snackbar 中的操作应该是右对齐或者末尾对齐的。在较小的屏幕上,预期效果正常(全屏宽度,操作按钮在屏幕的右侧),但在平板电脑上,我看到操作按钮紧挨着描述/标题文本,并带有一些填充。例如: Snackbar action position example 我在一个真实的 Nexus 9 (api 25) 和 3 个模拟器 (api 22、23 和 24) 上都看到了这个问题,无论是横屏还是竖屏。
Android 源代码中 snackbar 内容的布局 xml(design_layout_snackbar_include.xml)似乎表明操作按钮应该是右对齐或者末尾对齐的,所以我对为什么没有看到这种效果感到困惑。
我最初在我们公司正在开发的一个应用程序中看到了这种情况,现在我已经制作了一个测试应用程序来重现此问题(我用它来生成前面链接的示例图像)。该应用程序只是在一个活动中显示“Hello World!”,当按下返回按钮时,会显示一个 Snackbar 来确认操作。我的测试活动如下所示:
使用协调布局而不是相对布局不会影响这种行为。另外,扩展Activity而不是AppCompatActivity也没有任何区别。
因此,我的问题是,我是否以某种方式错误地使用了snackbar,这是Android中的一个bug,还是设计规范仅由开发人员完全实现自定义snackbar布局?
任何关于此的帮助或澄清都将不胜感激!
根据 Material Design 规范,在 snackbar 中的操作应该是右对齐或者末尾对齐的。在较小的屏幕上,预期效果正常(全屏宽度,操作按钮在屏幕的右侧),但在平板电脑上,我看到操作按钮紧挨着描述/标题文本,并带有一些填充。例如: Snackbar action position example 我在一个真实的 Nexus 9 (api 25) 和 3 个模拟器 (api 22、23 和 24) 上都看到了这个问题,无论是横屏还是竖屏。
Android 源代码中 snackbar 内容的布局 xml(design_layout_snackbar_include.xml)似乎表明操作按钮应该是右对齐或者末尾对齐的,所以我对为什么没有看到这种效果感到困惑。
我最初在我们公司正在开发的一个应用程序中看到了这种情况,现在我已经制作了一个测试应用程序来重现此问题(我用它来生成前面链接的示例图像)。该应用程序只是在一个活动中显示“Hello World!”,当按下返回按钮时,会显示一个 Snackbar 来确认操作。我的测试活动如下所示:
package au.com.test.snackbartest;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
}
@Override
public void onBackPressed()
{
Snackbar snackbar = Snackbar.make( findViewById( R.id.activity_main ), "Exit?", Snackbar.LENGTH_LONG );
snackbar.setAction( "EXIT", new View.OnClickListener()
{
@Override
public void onClick( View v )
{
finish();
}
} );
snackbar.show();
}
}
布局xml看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/activity_main"
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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="au.com.test.snackbartest.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
</RelativeLayout>
使用协调布局而不是相对布局不会影响这种行为。另外,扩展Activity而不是AppCompatActivity也没有任何区别。
因此,我的问题是,我是否以某种方式错误地使用了snackbar,这是Android中的一个bug,还是设计规范仅由开发人员完全实现自定义snackbar布局?
任何关于此的帮助或澄清都将不胜感激!