ImageButton 重叠问题
ImageButton overlapping issue
我有一个带有内部 RelativeLayout 的 RelativeLayout。这包含左侧的 TextView 和右侧的 ImageButton(星号)。
尽管我在 ImageButton 上设置了标签 layout_alignEnd 和 layout_alignRight,但您可以看到 ImageButton 与文本重叠。
这是我的内部 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 从不与文本重叠。
这里有什么问题?
只需在TextView
中使用layout_toLeftOf
属性
android:layout_toLeftOf="@+id/bt_favorite"
您在 ImageView
中使用 layout_alignParentRight
属性
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>
相对于线性,根据自己的需要调整权重。
<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>
基本上,您不需要将 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 属性 - android:orientation,它不起作用。
试试这个,它应该有效。
我有一个带有内部 RelativeLayout 的 RelativeLayout。这包含左侧的 TextView 和右侧的 ImageButton(星号)。
尽管我在 ImageButton 上设置了标签 layout_alignEnd 和 layout_alignRight,但您可以看到 ImageButton 与文本重叠。
这是我的内部 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 从不与文本重叠。
这里有什么问题?
只需在TextView
layout_toLeftOf
属性
android:layout_toLeftOf="@+id/bt_favorite"
您在 ImageView
layout_alignParentRight
属性
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>
相对于线性,根据自己的需要调整权重。
<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>
基本上,您不需要将 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 属性 - android:orientation,它不起作用。 试试这个,它应该有效。