2013-02-14 44 views
0

我有一个TextView的布局/对齐问题,我还没有找到解决方案,也就是说,我想在textview中对齐文本水平。TextView中的文本偏离中心对齐

要多加一点方面,我有一个ImageView的和由侧一个TextView侧时,ImageView的触摸屏幕的左边缘和所述的TextView水平填充屏幕的其余部分,像这样:

[-img-|-----text-----] 

TextView配置为singleLine =“true”和maxLines =“1”,因此如果它的水平空间太长,它将被截断。我的目标是对齐屏幕中心的文本,而不是TextView的中心,因为屏幕上还有其他元素与中心对齐,我需要文本对齐来匹配它。

所以,如果我在TextView的使用比重=“中心”,我得到上面的图片,但我真正想要的是

[-img-|--text--------] 

我试图把图像和文字在RelativeLayout的,从而使TextView实际上触及了屏幕的两个边缘,除了如果文字足够长以外,第一个字符将被图像隐藏起来,因为TextView位于图像视图的后面,这就是我想要的对齐方式。我还尝试了左边的边距,填充和可绘制的复合物,但文本总是相对于可用空间居中(我会考虑预期的行为)。

有没有人有关于如何实现这种对齐的任何线索,即相对于不同于TextView的组件的中心,可能在运行时以编程方式?预先感谢任何有用的建议。

编辑:用户Budius使用填充到右侧,以实现居中对齐其作品,但导致长的文本达到和我在寻找避免该解决方案之前TextView的右边缘被截断建议即,如果可能的话,它使用整个可用空间。

+0

您可以用FrameLayout里实现这一目标,把TextView的作为第一宽度= match_parent和gravity = center的视图,然后是带有layout_gravity left和wrap_content宽度的ImageView。问题在于文字的长度,因为它可能足够长以至于处于图像下。希望有所帮助。 – 2013-02-14 13:23:56

+0

感谢您的回应,但是这种方法似乎相当于将视图放入RelativeLayout中的尝试 - 文本隐藏在图像背后的可能性正是我想要解决的问题之一。 – handtwerk 2013-02-14 14:24:29

回答

0

尝试使用

android:layout_weight="1" 

如果它可以帮助你..

+0

谢谢,但我真的不明白这有何帮助,也许你可以解释? – handtwerk 2013-02-14 14:26:21

+0

我已经共享了一个代码,这可能不是一个合适的方式(我知道它)。否则FrameLayout是我知道解决您的问题的最佳方式.. – MRX 2013-02-15 04:38:00

2

我相信,将围绕它和移动20dp到了一边。

gravity:centrepadding:right=20dp

+0

谢谢,你是正确的,这使我得到了我想要的连接,但结果是长文本被截断,即使有更多的空间右边(被填充消耗),看起来有点奇怪。 – handtwerk 2013-02-14 14:22:58

+0

我理解这个问题,但我无法想出任何'简单'的出路。您可以尝试以编程方式检查文本长度并根据需要删除填充。 – Budius 2013-02-14 16:10:53

0

我知道这是不正确的做法不是太试试看..

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" > 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight=".33" 
    android:src="@drawable/ic_launcher" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_weight=".33" 
    android:gravity="center" 
    android:text="text" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight=".33" 
    android:src="@drawable/ic_launcher" 
    android:visibility="invisible" /> 

+0

感谢代码,它基本上完成了Budius的建议,但引入了同样的问题,即长文本不会填充整个可用空间(由不可见图像占据),但会在右边被截断边缘已经到达。 – handtwerk 2013-02-15 10:19:11