我有一个内部RelativeLayout的RelativeLayout。这包含左侧的TextView和右侧的ImageButton(星号)。
正如您所看到的,ImageButton重叠了文本,尽管我在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永远不会重叠文本。
这里有什么问题?
答案 0 :(得分: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>
答案 1 :(得分: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>
答案 2 :(得分: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 - android:orientation,它不起作用。 试试这个,它应该有用。