调整TextView的大小以适应文本(带有九个补丁背景图像)?

时间:2013-06-25 19:38:42

标签: android android-listview textview android-adapter nine-patch

我使用TextView和9补丁图片作为android中消息传递应用程序的背景。

这是它的样子: enter image description here

看看蓝色怎么样,左边显示的太多了?当它决定必须包装文本时,如何减少它呢?

我尝试访问public View getView(int position, View convertView, ViewGroup parent)中视图的宽度和高度字段,但它们始终为零(ps,TextView位于ListView内部,getView方法位于适配器内部ListView)。

谢谢!


TextView XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/message_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5sp"
    android:background="@drawable/bubble_b"
    android:shadowColor="@color/textShadow"
    android:shadowDx="1"
    android:shadowDy="1"
    android:text="Medium Text"
    android:textColor="#000000"
    android:textSize="16sp"
    android:lineSpacingMultiplier="1.1" />
</LinearLayout>

另外,这里有九个补丁为它做的内容的屏幕,所以你可以看到它是如何工作的:

enter image description here

2 个答案:

答案 0 :(得分:3)

在您附加的iPad图片中,iMessage将maxWidth设置为我猜的屏幕的一半。

因此,您可以获得Screen Width并将maxWidth设置为TextView的一半 这是您获取屏幕宽度并将其传递给TextView

的方法
Display display = ((WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
yourTextView.setMaxWidth(display.getWidth()/2);

P.S。 getWidth类的Display方法已弃用,您可以找到替代解决方案。您也可以获得width的{​​{1}}。

This is how it looks on my device

答案 1 :(得分:0)

检查draw9patch中的9-patch图像。检查左边如何绘制黑线。我认为底线定义了要拉伸的部分,顶行定义了内容的区域。