将后缀与android TextView中的制表符空间垂直对齐

时间:2015-05-23 07:03:59

标签: android textview vertical-alignment

我的行(水平LinearLayout)在结尾显示时间TextView。这是它的外观:

enter image description here

现在我需要所有行中的后缀(am / pm)垂直对齐。在上面的布局中情况并非如此,正如您所看到的,最后一行未对齐,因为显示的时间更长。

我使用制表符\ u0009实现了这一点。这意味着我将文本设置为例如“7:21 \ u0009 \ u0009pm”。这产生了所需的结果,如下所示:

enter image description here

但是,我需要知道(1)这是最有效的方式(2)这适用于所有Android设备。如果有其他方法可以实现这一目标,请告诉我。

这是一行的XML布局供您参考:

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="@dimen/prayer_time_row_height"
            android:layout_marginLeft="48dp"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <com.devspark.robototextview.widget.RobotoTextView
                style="@style/text_subhead"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Today"
                android:textColor="@color/material_light_secondary_text"
                android:visibility="invisible" />

            <com.devspark.robototextview.widget.RobotoTextView
                style="@style/text_subhead"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Event"
                android:textColor="@color/material_light_primary_text" />

            <com.devspark.robototextview.widget.RobotoTextView
                style="@style/text_subhead"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="12:06\u0009\u0009am"
                android:textColor="@color/material_light_primary_text" />

        </LinearLayout>

奖金

用于指出垂直对齐小时分钟分隔符(即冒号字符)的方法的加值点。

3 个答案:

答案 0 :(得分:2)

也许使用标签 效率最高,但差距非常大,无法配置。如果您需要单个视图组中的所有这些行,您可以尝试检查RelativeLayout:在常用左侧垂直对齐上午/下午,并在左侧和基线上放置小时。这是最灵活的方式,因为您可以控制相对位置和边距,但在计算方面效率较低,因为在布置元素时需要额外的计算。

根据对齐冒号 - 在大多数字体(不仅仅是等宽字体)中,数字被设计为占用相等的空间,因此只需对齐右边的数字(例如在相对布局中),它应该这样做。

答案 1 :(得分:2)

对于冒号角色,您可以尝试使用角色&#34; \ uee01&#34;而不是&#34;:&#34;。谷歌就是锁定屏幕上的时钟。

https://github.com/android/platform_frameworks_base/blob/master/packages/Keyguard/src/com/android/keyguard/KeyguardStatusView.java#L247

答案 2 :(得分:1)

您可以使用2列TableLayout。第一列是没有AM / PM的时间,第二列是AM / PM。将第一列的重力设置为“结束”或“右”,如果使用固定宽度的字体,则时间将排在冒号处。