对于图形横幅,我有两个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
包装文本时,包装是最后一行作为最小行,并没有考虑到我正在对齐底部。见下文。
我原本期望引力,使文字包装以大部分文字在底线的方式发生。
有关如何让TextView
在最后一行第一手操作中执行自动换行的任何建议吗?
感谢阅读!
答案 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>