Android:TextView自动换行,最短行首先

时间:2013-09-30 09:46:07

标签: android android-layout textview word-wrap

对于图形横幅,我有两个TextView位于彼此之上。

顶部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包装文本时,包装是最后一行作为最小行,并没有考虑到我正在对齐底部。见下文。

banner example

我原本期望引力,使文字包装以大部分文字在底线的方式发生。

有关如何让TextView在最后一行第一手操作中执行自动换行的任何建议吗?

感谢阅读!

2 个答案:

答案 0 :(得分:4)

据我所知,你不需要最后一线手,但是,我想提出一些建议:

解决方案1 ​​:让您的文字视图(顶部)为单行,并使用ellipsize。这样,您将确保文本视图始终位于容器底部,并在文本末尾添加一行和....缺点是,文字可能无法完全显示。

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

解决方案2 :您需要计算文本每个字符的大小,将顶部文本视图拆分为2个文本视图,为这2个文本视图指定文本。例如,在你的情况下。在计算文本大小并与文本视图的大小(在这种情况下为宽度)进行比较后,您将“20/20”分配给顶部的一个,剩下的“经验 - 2的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

希望这有帮助。

答案 1 :(得分: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>