我有以下xml。我有textview和imageview。我希望这些项目之间有一点空间(比方说20dp),但根据文本视图长度,它有时会重叠。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|left"
android:id="@+id/myName"
android:textSize="14sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/myName"
android:gravity="center_vertical|right"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:src="@drawable/ic_arrow_drop_down_red"
android:paddingLeft="20dp" />
</RelativeLayout>
您还可以在下图中看到问题。有文字和图像。图像为红色。
更新
我使用android:drawableRight
跟随以下方法,但得到了同样的东西。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<TextView
android:textColor="@color/primary_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|left"
android:id="@+id/myName"
android:textSize="14sp"
android:drawableRight="@drawable/ic_arrow_drop_down_red"
android:drawablePadding="20dp" />
</RelativeLayout>
答案 0 :(得分:2)
如果你想要的只是向TextView
的右边(或任何其他边)显示一个可绘制的内容,请考虑使用android:drawableRight
属性而不是两个视图。
可以使用android:drawablePadding
进一步分隔图像。如果您的UI更复杂,那可能还不够,您将需要处理两个视图。
答案 1 :(得分:1)
您可以像这样在这两者之间插入一个所需宽度的空视图(也可能很聪明地将布局更改为LinearLayout
)。
编辑更改为线性布局后,空视图解决方案和drawableRight
解决方案都可以正常工作,因此我编辑我的内容看起来更漂亮。 drawableRight的所有功劳都归功于@JuanCortes:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|left"
android:id="@+id/myName"
android:textSize="14sp"
android:drawableRight="@drawable/ic_arrow_drop_down_red"
android:paddingLeft="20dp" />
</LinearLayout>
答案 2 :(得分:0)
尝试使用Framelayout
它可能会对您有所帮助
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<FrameLayout
android:layout_width="match_parent"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|left"
android:id="@+id/myName"
android:textSize="14sp"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/myName"
android:layout_gravity="center_vertical|right"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:paddingLeft="20dp" />
</FrameLayout>
</RelativeLayout>
答案 3 :(得分:0)
为什么不使用这些属性?
How do I use a compound drawable instead of a LinearLayout that contains an ImageView and a TextView