2016-07-07 31 views
0

enter image description here如何让我的TextView定位响应?

在图像上方,黑色语音气泡和它后面的红色背景是单个ImageView跨越垂直电话屏幕的宽度。 “你好”是TextView,布局是相对的。使用边距,我可以在Android模拟器中将语音气泡中的“Hello”定位 - 但是当我模拟不同的手机时,定位关闭。

  1. 有没有更好的方式来定位我TextView
  2. 是有办法使它响应(这样你好总是在 讲话气泡,无论什么设备)?

这里是我的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

是9补丁图片吗? –

回答

0

我会用一个的FrameLayout代替RelativeLayout的有相似的图像大小相同。 然后使用TextView的属性android:layout_gravity="center"android:gravity="center"

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" /> 
... 
0

最好的办法是使用9修补图像&将其设置为TextView的背景。如果您使用普通的PNG文件,我们不能保证它将在所有分辨率上正确对齐,在延伸时它可能会变得模糊不清。

9-Patch图像自动调整大小以适应视图的内容和屏幕的大小。 Android SDK提供了一个工具,用于创建位于SDK sdk/tools目录中的9-patch图像。请参阅https://developer.android.com/studio/write/draw9patch.html

0

对于消息形状,您应该使用9补丁。你可以做的是将你的布局的根视图作为FrameLayout,然后向它添加一个TextView。设置消息形状九补丁作为TextView的背景。

用于创建Roman Nurik的9修补程序访问https://romannurik.github.io/AndroidAssetStudio/nine-patches.html。只需上传图片资源的png文件,然后选择定义以获得最佳效果。 Nine-patch有3个主要属性 -

拉伸区域:定义资产的哪些区域可以拉伸以适应不同的屏幕密度。

内容填充:定义将出现在图像内部的内容(文本)的填充区域。

光学边界:定义在资产周围应光学可见多少区域。

优点使用九补丁:

  • 可扩展
  • 使用方便
  • 轻型
  • 中的任意内容量可放于它。

希望这会有所帮助。

+0

谢谢你的回答! 9补丁是棘手的,因为它只会呈现一定的大小(由于相对布局?),我仍然不得不在补丁中文本应该开始的xml眼睛。但它确实改善了这个问题。 – callynx

+0

我不明白你的意思,“它只会呈现一定的尺寸(由于相对布局?)”。您不应该在根布局中遇到任何问题。你能明确指出你在做什么吗?谢谢 – Siddharth2092

+0

下面是一个快速截图:http://imgur.com/DbYiS1Q。文字气泡只想要这个尺寸,否则填满整个屏幕宽度。而我需要它是这个宽度,但是2/3这个高度。但它不会调整这种方式。 代码: <?xml version =“1.0”encoding =“utf-8”?> callynx

0

理想情况下,您应该为RelativeLayout使用完整的红色背景,并为TextView使用黑色语音9patch图像。 但是,如果您确实希望RelativeLayout背景为带有气泡的红色,则必须在运行时将其设置为红色。

计算RelativeLayout在运行时的高度和宽度,分别为150px300px。 仔细查看背景图像,并确定从顶部,右侧,底部和左侧的气泡边缘点。例如,如果图像高度为100px,200px,并且气泡顶部开始于30px并且底部为70px,则右边缘开始于150px并且左侧结束于250px。还要计算TextView的宽度和高度。

在运行时,根据上图改变TextView的位置。