0

对于图形横幅,我将两个TextViews 放在一起。

顶部TextView与底部对齐,底部与顶部对齐,以便文本始终位于同一中心附近。布局中的TextViews外观如下:

<LinearLayout
    android:layout_height="match_parent"
    android:layout_width="fill_parent"
    android:paddingLeft="126dp"
    android:paddingRight="10dp"
    android:orientation="vertical">
    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:maxLines="2"
        android:gravity="bottom|left"
        android:textColor="#FFFFFF"
        android:textStyle="bold"
        android:textSize="16sp" />
    <TextView
        android:id="@+id/artist"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:maxLines="2"
        android:gravity="top|left"
        android:textColor="#AAAAAA"
        android:textSize="16sp" />
</LinearLayout>

我的问题是,当顶部TextView包裹文本时,最后一行是最小的包裹,并且没有考虑到我与底部对齐。见下文。

横幅示例

我本来期望重力使文本换行以使大部分文本位于底线的方式发生。

关于如何让我TextView以最后一行优先方式执行自动换行的任何建议?

谢谢阅读!

4

2 回答 2

4

据我所知,没有您需要的最后一行优先方式,但是,我想提出一些建议:

解决方案 1:让您的文本视图(顶部)是单行且带有椭圆大小。这样,您将确保您的文本视图始终位于容器的底部,并在文本的末尾使用单行和 ...。缺点是文本可能无法完全显示。

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

解决方案 2:您需要计算文本每个字符的大小,将顶部文本视图拆分为 2 个文本视图,为这 2 个文本视图分配文本。例如,在您的情况下。在计算出文本的大小并与文本视图的大小(在这种情况下为宽度)进行比较后,您会将“The 20/20”分配给最上面的那个,剩下的就是“Experience - 2 of 2 (豪华版)”到顶部底部的一个。这也适用于超过 2 行的长文本。只需计算并正确应用,它就会起作用。以下是计算文本大小(以像素为单位)的代码:

Paint p = new Paint();
        String your_text = "This is your text";
        float size = p.measureText(your_text);
        // assign one part to the top-top
        // assign another part to the top-bottom

希望这可以帮助。

于 2013-09-30T10:16:29.947 回答
0
// try this way
<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">

        <ImageView
                android:layout_width="70dp"
                android:layout_height="70dp"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"
                android:src="@drawable/ic_launcher"/>

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

            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="First TextView"/>
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="1dp"
                    android:text="Second TextView"/>

        </LinearLayout>
</LinearLayout>
于 2013-09-30T10:35:21.830 回答