Android: 右对齐 TextView 且不截断
Android: right align TextView and no 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>
改用此代码。我假设你想要一个 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
,因此您无法将水平对齐方式应用于其所有子元素。例如,在 TextView
上设置 android:layout_gravity="left"
将不起作用。
简单修复...最后一个 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"
/>
我正在尝试将我的 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>
改用此代码。我假设你想要一个 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
,因此您无法将水平对齐方式应用于其所有子元素。例如,在 TextView
上设置 android:layout_gravity="left"
将不起作用。
简单修复...最后一个 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"
/>