0

我有一个内部RelativeLayout的RelativeLayout。它包含左侧的TextView和右侧的ImageButton(星号)。ImageButton重叠问题

The whole layout

正如你可以看到ImageButton的overlapps文字虽然我设置的ImageButton的标签layout_alignEnd和layout_alignRight。

这是我内心的RelativeLayout:

<RelativeLayout 
    android:id="@+id/layout_question" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/toolbar" 
    android:layout_toEndOf="@+id/tv_topic" 
    android:layout_toRightOf="@+id/tv_topic" 
    android:gravity="top" 
    android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/tv_question" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:padding="5dp" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textStyle="bold"/> 

    <ImageButton 
     android:id="@+id/bt_favorite" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignEnd="@+id/tv_question" 
     android:layout_alignRight="@+id/tv_question" 
     android:background="#00ffffff" 
     android:src="@drawable/star"/> 
</RelativeLayout> 

我想达到的文本总是在ImageButton的左侧,而且从来没有的ImageButton的overlapps文本。

这里有什么问题?

+0

使用'android:layout_alignBottom =“@ + id/tv_question”'in imagebutton – knownUnknown

回答

1

只需使用layout_toLeftOf财产TextView

android:layout_toLeftOf="@+id/bt_favorite" 

你可以根据使用layout_alignParentRight财产ImageView

android:layout_alignParentRight="true" 

刚刚尝试这一点

<RelativeLayout 
    android:id="@+id/layout_question" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/toolbar" 
    android:layout_toEndOf="@+id/tv_topic" 
    android:layout_toRightOf="@+id/tv_topic" 
    android:gravity="top" 
    android:orientation="horizontal"> 

    <TextView 
     android:id="@+id/tv_question" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_toLeftOf="@+id/bt_favorite" 
     android:padding="5dp" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textStyle="bold"/> 

    <ImageButton 
     android:id="@+id/bt_favorite" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:background="#00ffffff" 
     android:src="@drawable/star"/> 
</RelativeLayout> 
+0

谢谢。这解决了这个问题 –

1

使相对线性的,调整权重你的要求换货。

<LinearLayout 
     android:id="@+id/layout_question" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="top" 
     android:orientation="horizontal" 
     android:weightSum="6"> 

     <TextView 
      android:id="@+id/tv_question" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:padding="5dp" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textStyle="bold" 
      android:layout_weight="5"/> 

     <ImageButton 
      android:id="@+id/bt_favorite" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_alignEnd="@+id/tv_question" 
      android:layout_alignRight="@+id/tv_question" 
      android:background="#00ffffff" 
      android:src="@mipmap/ic_launcher" 
      android:layout_weight="1"/> 
    </LinearLayout> 
1

基本上,你不需要设置您的TextView(tv_question)到 android:layout_alignParentLeft="true" 导致其宽度为match_parent。所以如果你想让你的textview只是在你的imageview旁边,那就这样做。 首先解决您的ImageView的位置,让我们说,右对齐,然后,让TextView的仅仅是imageview的

<ImageButton 
    android:id="@+id/bt_favorite" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:background="#00ffffff" 
    android:src="@drawable/star"/> 
<TextView 
    android:id="@+id/tv_question" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_toLeftOf="@+id/bt_favorite" 
    android:padding="5dp" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textStyle="bold"/> 

终于离开身边,你没有设置你的RelativeLayout ATTR - 安卓方向,它不起作用。 试试这个,它应该工作。