2013-08-29 106 views
11

我试图开发一个android应用程序,但我在GUI设计中遇到了一些问题。以下部分截图是我的问题(红色和蓝色线条是由Android调试选项生成的)。在RelativeLayout中防止视图重叠

my problem

这是代码:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/caption" 
    android:layout_below="@+id/caption" > 

    <ImageButton 
     android:id="@+id/button_edit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/content_edit" 
     style="?android:attr/borderlessButtonStyle" /> 

    <TextView 
     android:id="@+id/myText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:text="@string/num_placeholder" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 


</RelativeLayout> 

正如你所看到的,会将myText的TextView重叠的ImageButton button_edit。 一个简单的解决方案是使用LinearLayout而不是RelativeLayout。问题是:

  1. 我需要正确的
  2. 我需要的文字填写布局的其余部分(以明显的编辑按钮的左边)

我还编辑按钮试图将myText的layout_width设置为'fill_parent',但它填充了编辑按钮左侧的整个屏幕的其余部分。

预期的行为将MYTEXT增加其高度(成为两行的TextView),而不是重叠的“button_edit”

谁能帮助我?在TextView的布局感谢

+0

为什么你想在'LinearLayout'中实现'RelativeLayout'? – sriramramani

回答

19

使用layout_toLeftOf

这样的:

<RelativeLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_alignLeft="@+id/caption" 
android:layout_below="@+id/caption" > 

<ImageButton 
    android:id="@+id/button_edit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_alignParentRight="true" 
    android:src="@drawable/content_edit" 
    style="?android:attr/borderlessButtonStyle" /> 

<TextView 
    android:id="@+id/myText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:text="@string/num_placeholder" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:layout_toLeftOf="@+id/button_edit" /> 

+0

谢谢!它完美的作品! – Gnufabio

+0

如果我们想用动态创建视图实现它,该怎么办? –

0

做的另一种方法是使用Android:layout_toEndOf属性

<ImageButton 
    android:id="@+id/button_edit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" 
    android:layout_alignParentRight="true" 
    android:src="@drawable/content_edit" 
    style="?android:attr/borderlessButtonStyle" 
    android:layout_toEndOf="@+id/myText" /> 

<TextView 
    android:id="@+id/myText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:text="@string/num_placeholder" 
    android:textAppearance="?android:attr/textAppearanceLarge" />