Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
layout_gravity=right的相对布局在Android中收缩包含TextView_Android_Android Layout - Fatal编程技术网

layout_gravity=right的相对布局在Android中收缩包含TextView

layout_gravity=right的相对布局在Android中收缩包含TextView,android,android-layout,Android,Android Layout,出于某种原因,重力设置为“右”的相对布局不会在重力位于最长窗口小部件上时停止,而是一直到最短窗口小部件,将最长窗口小部件向右移动 下面是一张更好地解释它的图片: 我希望它在到达@id/timestampTextView时停止向右拉动重力,也就是说,我希望“一些长文本”完全显示,而不隐藏。此外,我希望它尊重android:layout_alignRight=“@+id/textView”,即“一些长文本”应该与“短文本”右对齐 以下是该图像的布局: <?xml version="1.0" e

出于某种原因,重力设置为“右”的相对布局不会在重力位于最长窗口小部件上时停止,而是一直到最短窗口小部件,将最长窗口小部件向右移动

下面是一张更好地解释它的图片:

我希望它在到达@id/timestampTextView时停止向右拉动重力,也就是说,我希望“一些长文本”完全显示,而不隐藏。此外,我希望它尊重android:layout_alignRight=“@+id/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: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=“@+id/textTextView”而不是alignRight,它在左侧可以正常工作,但我需要它在右侧也能正常工作。为什么同样的事情不适用于右侧

以下是正确显示左侧的图像和代码:


更新:

通过将RelativeLayout替换为LinearLayout解决了此问题: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>

对于id为TextView的TextView,您可以使用android:layout\u 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>



您应该至少使用12sp textsizeb,但我希望相对布局能够包装文本视图,也就是说,我希望它在@id/timestampTextView之前开始,在该图像上的红线与它所在的位置类似,但不隐藏@id/timestampTextView。@JohnBerger我编辑了答案。我认为应该有更好的解决办法,但也许现在对你来说已经足够了。@JohnBerger我的回答对你有帮助吗?没有。我从RelativeLayout切换到LinearLayout,这解决了我的问题。这是我的布局最终布局,但我希望相对布局包装文本视图,也就是说,我希望它在@id/timestampTextView之前开始,在该图像上的红线与它所在的位置类似,但不隐藏@id/timestampTextView。
<?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>
    <?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>