android - 正确格式化文本以提醒对话框

标签 android

我有一个代码可以将秒数转换为小时、分钟、秒:

int day = (int)TimeUnit.SECONDS.toDays((long) val3);        
long hours = TimeUnit.SECONDS.toHours((long) val3) - (day *24);
long minute = TimeUnit.SECONDS.toMinutes((long) val3) - (TimeUnit.SECONDS.toHours((long) val3)* 60);
long second = TimeUnit.SECONDS.toSeconds((long) val3) - (TimeUnit.SECONDS.toMinutes((long) val3) *60);

我还有写结果的代码:

alertDialog.setMessage("Day\t\t" + day + "\nHour\t\t" + hours + "\nMinute\t" + minute + "\nSeconds\t" + second);

我需要使用\t 设置正确的格式,以将日期、小时、分钟与变量分开。问题是我不知道我有多少天/小时/分钟。那么,以编程方式使用\t 的最佳方式是什么?

enter image description here

最佳答案

enter image description here

要实现与此类似的效果,请创建自定义 Dialog 并为其使用自定义布局。修改内部 TextView 的值或任何您想用来显示数据的值。在我的演示中,您可以执行如下简单的操作:

Dialog dialog = new Dialog(this);
       dialog.setContentView(R.layout.dialog);
((TextView)dialog.findViewById(R.id.days)).setText(days);
((TextView)dialog.findViewById(R.id.hours)).setText(hours);
((TextView)dialog.findViewById(R.id.minutes)).setText(minutes);
((TextView)dialog.findViewById(R.id.seconds)).setText(seconds);
//To show, just call dialog.show();

对应于 R.layout.dialog 的布局如下,但请记住,您可以修改它以满足您的确切需求,更改颜色大小、布局和任何您想要的。我试图让它尽可能简洁,但我们都知道 xml 布局非常庞大,即使对于简单的布局也是如此。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Days"
            android:id="@+id/daysLabel"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hours"
            android:id="@+id/hoursLabel" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Minutes"
            android:id="@+id/minutesLabel"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Seconds"
            android:id="@+id/secondsLabel"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0"
            android:id="@+id/days" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="42"
            android:id="@+id/hours"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="12"
            android:id="@+id/minutes"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="59"
            android:id="@+id/seconds"/>
    </LinearLayout>

</LinearLayout>

总而言之,您创建了一个将显示为对话框的 xml 布局文件,而不是默认文件。这使您可以不受限制地决定在何处显示内容。

关于android - 正确格式化文本以提醒对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26077058/

相关文章:

android - 在 GridView 中创建页脚需要帮助

java - 如何将我的 JSON 属性之一转换为数组?

android - 如何将方法 channel 添加到 Flutter Fragment

java - 从按钮获取输入的 Android 单行 textView(用于计算器应用程序),这是一个问题吗?

java - 无法使用 Android 客户端 APP 从 TCP 服务器读取数据

android - 从 ELM327 中提取数据

选择底部导航选项卡后Android清除回栈

Android 使用自定义数组适配器

android - 没有名称为 getExternalFilesDirs 的方法 - 三星平板电脑

同步调用中的 Android runOnUiThread()