最小化活动后如何保持吐司方向?

Posted

技术标签:

【中文标题】最小化活动后如何保持吐司方向?【英文标题】:How to keep toast orientation after minimizing activity? 【发布时间】:2020-09-26 09:14:52 【问题描述】:

手机始终处于横向模式。

我的活动处于横向模式(并且有横向版本),它显示一个 toast,它也以横向模式显示。 祝酒后,我将活动最小化:

Toast.makeText(getApplicationContext(), "My Toast Message", Toast.LENGTH_LONG).show();
moveTaskToBack(true);

toast 继续显示,但现在在纵向模式下旋转 90 度(这可能与主屏幕的模式有关)。

目前我只找到了这个SO post with the same problem。

有没有办法强制以横向模式显示吐司? (toast 是在横向模式下启动的,所以它不应该旋转 90 度,它应该保持横向模式)

我想要的是:当我按下按钮时,活动消失(然后我们会看到后面的任何应用程序或主屏幕)并显示吐司。全部为横向模式。这可能吗?

【问题讨论】:

【参考方案1】:

我找到了一种方便又简单的方法来实现这一点!

首先,我尝试了先显示 toast 和 moveTaskToBack。但这没有用。 moveTaskToBack 比定时器强,当手机还在横屏模式时,吐司继续以竖屏模式出现。

然后我考虑调整 imageView。如果可以旋转 90 度来显示它会怎样?这就是解决方案。它有效。

在您的布局中,将以下行添加到您的图像视图(或任何其他元素)以将其旋转 90 度:

android:rotation="90"

然后您必须玩并测试您的手机以将您的元素(不仅是 imageView,还包括按钮、textview 等)定位在屏幕上您想要的位置。

我用过:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="#00FFFFFF"
    android:backgroundTint="#00FFFFFF"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/texttoast"
        android:layout_
        android:layout_
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:layout_marginEnd="430dp"
        android:layout_toStartOf="@id/imagetoast"
        android:rotation="90"
        android:text="My text here"
        android:textAlignment="center"
        android:textColor="#000000" />

    <ImageView
        android:id="@+id/imagetoast"
        android:layout_
        android:layout_
        android:layout_centerVertical="true"
        android:layout_alignParentEnd="true"
        android:layout_marginEnd="15dp"
        android:rotation="90"
        android:src="@drawable/my_image" />

</RelativeLayout>

【讨论】:

以上是关于最小化活动后如何保持吐司方向?的主要内容,如果未能解决你的问题,请参考以下文章

保持远程桌面会话“活动”[关闭]

更改片段后如何取消显示堆叠的吐司?

根据宽度和高度保持纵横比

HTTPBS架构

如何保持 UIScrollView 内容大小的最小高度?

使用导航组件从一个活动导航到另一个活动