我有这样的布局:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:maxWidth="120dp"
android:id="@+id/tvUsername"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:maxLines="2"
android:ellipsize="end" />
<TextView
android:layout_centerInParent="true"
android:id="@+id/tvStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="2"
android:ellipsize="end"
android:text="sometime this text is so long"/>
</RelativeLayout>
我希望将状态文本(tvStatus)保持在水平中心(以及垂直中心)。问题是某个时候,状态文本很长,并且它与左侧的textview(tvUsername)重叠。有没有办法阻止它?
我尝试添加android:layout_toRightOf="@+id/tvUsername"
,它可以正常工作但状态文字不能保持水平居中
答案 0 :(得分:0)
尝试这是有效的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tvUsername"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/tvStatus"
android:ellipsize="end"
android:maxLines="2"
android:maxWidth="120dp"
android:text="fasaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad" />
<TextView
android:layout_centerInParent="true"
android:id="@+id/tvStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="2"
android:ellipsize="end"
android:text="sometime this text is so long"/>
答案 1 :(得分:0)
将layout_width
提供给wrap_content
而不是120dp
中可用于解决问题的某些特定dp(tvUsername
)
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/tvUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/tvStatus"
android:ellipsize="end"
android:maxLines="2"
android:maxWidth="120dp"
android:text="sometime this text is so long" />
<TextView
android:id="@+id/tvStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:ellipsize="end"
android:maxLines="2"
android:text="sometime this text is so long" />
</RelativeLayout>
带重量的线性布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/tvUsername"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="2"
android:text="sometime this text is so long" />
<TextView
android:id="@+id/tvStatus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3.6"
android:ellipsize="end"
android:maxLines="2"
android:text="sometime this text is so long" />
</LinearLayout>
答案 2 :(得分:0)
如果您想添加:
android:layout_toRightOf="@+id/tvUsername"
并且状态文本保持在中心水平,它不能到达所有。你需要重新设计布局。