2

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

这是它的样子: 在此处输入图像描述

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

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

谢谢!


文本视图 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>

此外,这里是九个补丁为它做了什么的屏幕,所以你可以看到它是如何工作的:

在此处输入图像描述

4

2 回答 2

3

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

所以你可以为你获取Screen Width并设置maxWidth它的一半TextView 这是你如何获得屏幕宽度并将其传递给你的TextView

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

类的PSgetWidth方法Display说已弃用,您可以找到替代解决方案。你也可以得到width你的LinearLayout

这是它在我的设备上的样子

于 2013-06-25T21:39:46.423 回答
0

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

于 2013-06-25T19:59:21.713 回答