TextView在水平LinearLayout中拉伸并推动屏幕外的另一个视图

时间:2014-07-02 22:45:30

标签: android android-layout

我有一个横向LinearLayout,包含两个项目:TextViewRatingBar。我希望RatingBar始终直接位于TextView的右侧。但我希望TextView尽可能多地延伸,直到没有空间,然后我希望它添加线条。

以下是它应该如何显示的直观表示,显示不同宽度的文本:

| TextView - RatingView ------------- |

| TextViewTextView - RatingView ----- |

| TextViewTextViewTextVi - RatingView |
| ewTextViewTextView                  |

然而,随着TextView的延伸,RatingBar不断被推离屏幕。这就是它的作用:

| TextView - RatingView ------------- |

| TextViewTextView - RatingView ----- |

| TextViewTextViewTextViewTextViewTex |
| tView                               |

这是XML:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextViewTextViewTextViewTextViewTextViewTextViewTextView"
        android:id="@+id/titleTextView"
        android:textSize="15sp"
        android:textColor="@color/blue"
        android:layout_gravity="center_vertical"
        android:layout_marginRight="8dp"
        android:layout_weight="1"/>

    <RatingBar
        android:layout_width="106dp"
        android:layout_height="20dp"
        android:id="@+id/ratingBar2"
        android:numStars="5"
        android:rating="0"
        style="@style/customRatingBar"
        android:layout_gravity="center_vertical"
        android:isIndicator="true" />

</LinearLayout>

我尝试将layout_weight添加到任一视图或两者都添加。似乎无法获得任何工作。我应该使用RelativeLayout吗?我也无法做到这一点。

2 个答案:

答案 0 :(得分:1)

这是一个非常困难的任务!正如@zimeriljazia所建议的那样,对于RatingBar TextView RelativeLayoutTextView向右移动并且alignParentRight左侧包裹layout_toRightOf="@id/ratingbar"很容易并且对于RatingBar使用<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <RatingBar android:id="@+id/ratingBar1" style="?android:attr/ratingBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:numStars="5" android:rating="5" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@id/ratingBar1" android:text="@string/long" /> </RelativeLayout>

RatingBar

如果您只是使用TextView.setCompoundDrawables()进行显示(而不是输入),那么您可以使用layout_width或其中一个表兄弟。除了正确之外的所有人都发送null,并为此设置您的评级图像。但是,您需要将wrap_content指定为{{1}}。

答案 1 :(得分:0)

尝试为textview添加一个相对布局,为ratingbar添加一个相对布局。 将评级栏布局对齐到屏幕右侧,然后制作textview布局android:layout_toLeftOf评级栏