出于某种原因,相对布局的重力设置为"右"它的重力不会停留在最长的小部件上,而是直到最短的小部件,向右移动最长的部分。
这是一张更好地解释它的图片:http://i.stack.imgur.com/POHmA.png
我希望它在到达@id / timestampTextView时停止向右拉引力,即我想要"一些很长很长的文本"完全显示,不隐藏。此外,我希望它尊重android:layout_alignRight =" @ + id / textTextView",即"一些很长很长的文本"应该与"短文本"右边对齐。
以下是该图片的布局:
<?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"
android:background="@drawable/abc_cab_background_top_holo_dark" >
<RelativeLayout
android:id="@+id/messageRelativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="right"
android:background="@drawable/abc_cab_background_top_holo_light">
<TextView
android:id="@+id/textTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="short text"
android:textSize="20sp"
android:layout_below="@+id/timestampTextView" />
<TextView
android:id="@+id/timestampTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:singleLine="true"
android:text="some long long long long text"
android:layout_alignRight="@+id/textTextView"
android:textSize="10sp" />
</RelativeLayout>
</LinearLayout>
有趣的是,将layout_gravity设置为左侧和android:layout_alignLeft =&#34; @ + id / textTextView&#34;而不是alignRight,它适用于左侧,但我需要它在右侧同样工作。为什么同样的事情不适用于右侧?
以下是正确显示左侧的图片和代码:http://i.stack.imgur.com/6i4yG.png
<?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"
android:background="@drawable/abc_cab_background_top_holo_dark" >
<RelativeLayout
android:id="@+id/messageRelativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="left"
android:background="@drawable/abc_cab_background_top_holo_light">
<TextView
android:id="@+id/textTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="short text"
android:textSize="20sp"
android:layout_below="@+id/timestampTextView" />
<TextView
android:id="@+id/timestampTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:singleLine="true"
android:text="some long long long long text"
android:layout_alignLeft="@+id/textTextView"
android:textSize="10sp" />
</RelativeLayout>
</LinearLayout>
更新
通过用LinearLayout替换RelativeLayout来解决这个问题:i.stack.imgur.com/dD5TL.png
<?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"
android:background="@drawable/abc_cab_background_top_holo_dark" >
<LinearLayout
android:id="@+id/messageLinearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:orientation="vertical"
android:background="@drawable/abc_cab_background_top_holo_light">
<TextView
android:id="@+id/timestampTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="some long long long long text"
android:textSize="12sp"
android:layout_gravity="right" />
<TextView
android:id="@+id/textTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="short text"
android:textSize="20sp"
android:layout_gravity="right" />
</LinearLayout>
</LinearLayout>
答案 0 :(得分:0)
您可以使用带有id textTextView的TextView的android:layout_alignRight属性,而不是带有id timestampTextView的TextView。见下文。我认为这不是最好的方式,但它有效。
<?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"
android:background="@drawable/abc_cab_background_top_holo_dark" >
<RelativeLayout
android:id="@+id/messageRelativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="right"
android:background="@drawable/abc_cab_background_top_holo_light">
<TextView
android:id="@+id/textTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="short text"
android:layout_alignRight="@id/timestampTextView"
android:textSize="20sp"
android:layout_below="@+id/timestampTextView" />
<TextView
android:id="@+id/timestampTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:singleLine="true"
android:text="some long long long long text"
android:textSize="10sp" />
</RelativeLayout>
</LinearLayout>
答案 1 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:gravity="right|top"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/messageRelativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignStart="@+id/timestampTextView"
android:layout_below="@+id/timestampTextView"
android:layout_centerVertical="true"
android:text="short text"
android:textSize="20sp" />
<TextView
android:id="@+id/timestampTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:singleLine="true"
android:text="some long long long long text"
android:textSize="10sp" />
</RelativeLayout>
</LinearLayout>