Android 平板电脑上的小吃栏操作未右对齐
Android snackbar action not right aligned on tablets
注意:我已经看到标题为 "Align Snackbar's Action on the right" 的现有问题,但这并没有解决我的特定问题。
根据 material 设计规范,快餐栏中的操作应 right/end 对齐。较小屏幕上的默认行为似乎按预期工作(全屏宽度,操作与屏幕右侧对齐),但在平板电脑上我看到 description/title 文本旁边有一些填充的操作.此处示例:
Snackbar action position example
我在真实的 Nexus 9 (api 25) 和 3 个模拟器 (api 22、23 和 24) 上看到过纵向和横向。
Android 来源 (design_layout_snackbar_include.xml) 中快餐栏内容的布局 xml 似乎建议操作按钮应 right/end 对齐,所以我是有点困惑为什么我没有看到这个。
我第一次看到这种情况发生在我公司正在开发的一个应用程序中,现在我制作了一个测试应用程序来重现该问题(我用它来生成前面链接的示例图像)。该应用程序所做的只是在 activity 中显示 "Hello World!",当按下后退按钮时,会显示一个快餐栏以确认操作。我的测试 activity 看起来像这样:
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 中的错误,还是设计规范只是留给开发人员使用自定义 snackbar 布局来完全实现?
如有任何帮助或澄清,我们将不胜感激!
这是 25.1.0 支持库引入的错误。恢复到 25.0.1 会导致正确的行为。原来这里已经提交了错误报告:
Issue 231850: Snackbar Action Text Not Right-Aligned in 25.1.0
感谢 ianhanniballake 建议在支持库更新中回归。
注意:我已经看到标题为 "Align Snackbar's Action on the right" 的现有问题,但这并没有解决我的特定问题。
根据 material 设计规范,快餐栏中的操作应 right/end 对齐。较小屏幕上的默认行为似乎按预期工作(全屏宽度,操作与屏幕右侧对齐),但在平板电脑上我看到 description/title 文本旁边有一些填充的操作.此处示例:
Snackbar action position example
我在真实的 Nexus 9 (api 25) 和 3 个模拟器 (api 22、23 和 24) 上看到过纵向和横向。
Android 来源 (design_layout_snackbar_include.xml) 中快餐栏内容的布局 xml 似乎建议操作按钮应 right/end 对齐,所以我是有点困惑为什么我没有看到这个。
我第一次看到这种情况发生在我公司正在开发的一个应用程序中,现在我制作了一个测试应用程序来重现该问题(我用它来生成前面链接的示例图像)。该应用程序所做的只是在 activity 中显示 "Hello World!",当按下后退按钮时,会显示一个快餐栏以确认操作。我的测试 activity 看起来像这样:
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 中的错误,还是设计规范只是留给开发人员使用自定义 snackbar 布局来完全实现?
如有任何帮助或澄清,我们将不胜感激!
这是 25.1.0 支持库引入的错误。恢复到 25.0.1 会导致正确的行为。原来这里已经提交了错误报告:
Issue 231850: Snackbar Action Text Not Right-Aligned in 25.1.0
感谢 ianhanniballake 建议在支持库更新中回归。