我正在建立聊天,并且我试图在TextView周围绘制一个语音气泡,我想根据文本长度调整气泡大小。
我已经尝试在textview中插入可绘制的语音气泡,但我无法调整气泡内的文本,因此我将textview包装在相对布局中。
现在,无论内部文本是什么,气泡大小都不会改变。
代码(聊天行):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1"
android:padding="3sp"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/test"
>
<TextView
android:id="@+id/tvMsg"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:padding="10sp"
android:fontFamily="sans-serif-light"
android:textColor="#fdccc8"
android:textSize="20dp"
android:text="OneTwoThree"
android:layout_marginStart="29dp"
android:layout_marginEnd="15dp"
android:layout_marginTop="3sp"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
</LinearLayout>
代码(语音泡沫形状)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate
android:fromDegrees="-45"
android:pivotX="0%"
android:pivotY="0%" >
<shape android:shape="rectangle">
<solid android:color="#da4131" />
</shape>
</rotate>
</item>
<item android:left="20dp">
<shape
android:shape="rectangle">
<solid android:color="#da4131"/>
<corners
android:radius="1dp"
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp"
android:topLeftRadius="5dp"
android:topRightRadius="15dp" />
</shape>
</item>
</layer-list>
答案 0 :(得分:0)
我认为可以通过水平LinearLayout
包裹ImageView
(对于三角形)和TextView
(具有与三角形颜色匹配的纯色背景)来实现。 Android Studio会告诉您应该使用android:drawableLeft
而不是使用LinearLayout和两个孩子,但我不相信如果您使用该属性,您实际上可以获得所需的样式。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="12dp"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/speech_left"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="240dp"
android:paddingTop="8dp"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:paddingBottom="8dp"
android:textColor="#fff"
android:textSize="15sp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
android:background="#f00"/>
</LinearLayout>