Android:右对齐TextView,没有截断

时间:2015-01-27 19:40:16

标签: android textview truncate

我试图将android:id="@+id/date" TextView与屏幕右侧对齐。这是有效的,但问题是当TextView android:id="@+id/name"很长时,日期会被截断。例如。而不是" Mon 1/26"它会读到" Mon 1 ..."。我该如何解决这个问题,以便始终显示完整日期?下面是我的xml文件。提前感谢您的帮助!

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/instance_chart"
    style="@style/InstanceChart"
    android:layout_height="40sp"
    android:clickable="false"
    android:focusable="false"
    android:orientation="vertical">

    <com.my.name.chart.ChartView
        android:layout_marginTop="9dp"
        android:id="@+id/chart_view"
        app:barLabelHeight="0sp"
        android:layout_height="30dp"
        style="@style/InstanceChart.Chart" />

<LinearLayout
    android:orientation="horizontal"
    android:weightSum="1"
    style="@style/InstanceChart.Title"
    >

    <TextView
        android:id="@+id/symbol"
        android:layout_width="70sp"
        android:layout_height="match_parent"

        android:singleLine="true"
        android:ellipsize="end"
        android:gravity="left"

        style="@style/InstanceChart.Symbol"
        />

    <TextView
        android:id="@+id/name"
        android:layout_width="0dp"
        android:layout_height="match_parent"

        android:layout_weight="1"
        android:gravity="left|center_vertical"

        android:singleLine="true"
        android:ellipsize="end"

        style="@style/InstanceChart.Name"
        />

    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"

        android:singleLine="true"
        android:ellipsize="marquee"
        android:gravity="right|center_vertical"
        android:textStyle="normal"
        />

</LinearLayout>    
</FrameLayout>

2 个答案:

答案 0 :(得分:0)

请尝试使用此代码。我假设您想要一个3文本列布局,第二个布局尽可能地拉伸。

<LinearLayout
    android:orientation="horizontal"
    android:weightSum="1"
    style="@style/InstanceChart.Title"
    >

    <TextView
        android:id="@+id/symbol"
        android:layout_width="70sp"
        android:layout_height="match_parent"

        android:singleLine="true"
        android:ellipsize="end"
        android:gravity="left"

        style="@style/InstanceChart.Symbol"
        />

    <TextView
        android:id="@+id/name"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"

        android:singleLine="true"
        android:ellipsize="end"

        style="@style/InstanceChart.Name"
        />

    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"

        android:singleLine="true"
        android:ellipsize="marquee"
        android:gravity="right"
        android:textStyle="normal"
        />

</LinearLayout>

使用TextView时,android:gravity设置文字对齐方式。但是,android:layout_gravity会在其容器中设置TextView的重力。

此处您使用的是水平LinearLayout,因此无法对其所有子项应用水平对齐。例如,在android:layout_gravity="left"上设置TextView将无效。

答案 1 :(得分:0)

简单修复......最后textView应该是

<TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"

        android:ellipsize="none"
        android:singleLine="true"
        android:gravity="right|center_vertical"
        android:textStyle="normal"
        />