在上图中,黑色气泡及其背后的红色背景为单个ImageView
,横跨垂直手机屏幕的宽度。 “Hello”是TextView
,布局是相对的。使用边距,我能够在我的Android模拟器中将“Hello”定位在语音气泡中 - 但是当我模拟不同的手机时定位关闭。
TextView
这是我的xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/relativeLayout">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/mainGraphic"
android:src="@drawable/finished2"
android:layout_marginBottom="97dp"
android:layout_above="@+id/enterValue"
android:layout_alignParentStart="true" />
<TextView
android:maxWidth="200dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/helloText"
android:textColor="#FFFFFF"
android:layout_marginEnd="29dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="45dp" />
</RelativeLayout>
答案 0 :(得分:0)
我会使用 FrameLayout 而不是像图片一样大小的 RelativeLayout 。
然后使用属性android:layout_gravity="center"
和android:gravity="center"
作为TextView。
答案 1 :(得分:0)
试试这个:
...
<TextView
android:maxWidth="200dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/helloText"
android:textColor="#FFFFFF"
android:layout_alignTop="@+id/mainGraphic"
android:layout_alignBottom="@+id/mainGraphic"
android:layout_alignLeft="@+id/mainGraphic"
android:layout_alignRight="@+id/mainGraphic"
android:gravity="center" />
...
答案 2 :(得分:0)
最佳方法是使用9-patch image&amp;将其设置为Textview的背景。如果您使用普通的png文件,我们无法保证它将在所有分辨率上正确对齐&amp;拉伸时会变得模糊。
9-Patch图像自动调整大小以适应视图内容和屏幕大小。 Android SDK提供了一个用于创建9-patch图像的工具,该工具位于 SDK sdk / tools目录中。见https://developer.android.com/studio/write/draw9patch.html。
答案 3 :(得分:0)
您应该使用 9-patch 作为邮件形状。您可以做的是将布局的根视图作为 FrameLayout ,然后向其中添加 TextView 。设置消息形状Nine-patch作为 TextView 的背景。
由Roman Nurik创建9-patch访问https://romannurik.github.io/AndroidAssetStudio/nine-patches.html。只需上传图像资源的png文件,然后选择 xhdpi 定义以获得最佳效果。 Nine-patch有3个主要属性 -
拉伸区域:定义资产的哪些区域可以拉伸以适应不同的屏幕密度。
内容填充:定义将在图像中显示的内容(文本)的填充区域。
光学界限:定义资产周围应该有多少光学可见区域。
使用Nine-patches的优点:
希望这有帮助。
答案 4 :(得分:0)
理想情况下,您应该使用相对于RelativeLayout的完整红色背景,以及TextView的黑色语音9patch图像。 但是如果你真的希望RelativeLayout的背景为带有语音气泡的红色,你必须在运行时设置它。
分别在运行时计算RelativeLayout的高度和宽度,分别为150px
和300px
。
仔细查看背景图像,并从顶部,右侧,底部和左侧确定气泡的边缘点。例如,如果图片高度为100px
200px
,并且气泡顶部位于30px
,而底端位于70px
,则右边缘从150px
开始并向左结束于250px
。还要计算TextView的宽度和高度。
在运行时,根据上面的数字更改TextView的位置。