正确格式化文本以alertdialog

时间:2014-09-27 17:01:00

标签: android

我的代码将秒数转换为小时,分钟,秒(s):

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

2 个答案:

答案 0 :(得分:1)

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布局文件,该文件将显示为对话框,而不是默认对话框。这使您可以自由决定显示的内容,而不受限制。

答案 1 :(得分:1)

如果您对单位前面的数字没问题,那么您可以轻松排列所有内容而无需自定义对话框布局。只需将setMessage更改为:

即可
alertDialog.setMessage(String.format("%3d Day\n%3d Hour\n%3d Minute\n%3d Seconds",
                       day, hours, minute, second));