android布局:TextView右侧的TextView

时间:2017-09-18 13:53:17

标签: android android-layout android-linearlayout android-relativelayout

我需要显示的布局:

  1. 如果 cl__tv_team_name 有短文本,则会在旁边显示(Q)符号 cl__tv_team_name cl__tv_team_name 和(Q)标志彼此相邻)
  2. 如果 cl__tv_team_name 包含长文本,则textview会显示两行或多行,但右侧的(Q)符号仍然可见
  3. 简单LinearLayout不起作用。 TextView cl__tv_team_name 占用所有宽度。

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
    
        <TextView
            android:id="@+id/cl__tv_team_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="asdfa asdfasf asdf asdf asf dsafasd fads fasdf asdfsad asdf dsaf asfd safa" />
    
        <TextView
        android:id="@+id/cl__tv_q_sign"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="(Q)" />
    
    </LinearLayout>
    

    我也试过了RelativeLayout但效果不佳:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical">
    
        <TextView
            android:id="@+id/cl__tv_team_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_centerVertical="true"
            android:text="asdfa asdfasf asdf asdf asf dsafasd fads fasdf asdfsad asdf dsaf asfd safa" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_toEndOf="@+id/cl__tv_team_name"
            android:layout_toRightOf="@+id/cl__tv_team_name"
            android:text="(Q)"
            android:textSize="13sp" />
    </RelativeLayout>
    

4 个答案:

答案 0 :(得分:3)

我会用ConstraintLayout来实现这个目标:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/text"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="short text"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/q"
        app:layout_constraintWidth_default="wrap"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintHorizontal_bias="0"/>

    <TextView
        android:id="@+id/q"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="(Q)"
        app:layout_constraintLeft_toRightOf="@+id/text"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBaseline_toBaselineOf="@+id/text"/>

</android.support.constraint.ConstraintLayout>

enter image description here

或者让第一个视图中的文字真的很长:

enter image description here

答案 1 :(得分:0)

在相对布局中尝试垂直线性布局和水平线性布局的混合。听起来令人困惑,但它通常有效。

答案 2 :(得分:0)

这应该有效

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical">

        <TextView
            android:id="@+id/q_sign"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:text="(Q)"
            android:textSize="13sp" />

        <TextView
            android:id="@+id/cl__tv_team_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_centerVertical="true"
            android:layout_toStartOf="@+id/q_sign"
            android:layout_toLeftOf="@+id/q_sign"
            android:text="asdfa asdfasf asdf asdf asf dsafasd fads fasdf asdfsad asdf dsaf asfd safa" />

</RelativeLayout>

答案 3 :(得分:0)

尝试在LinearLayout布局xml文件中添加android:weight = 1。

<?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="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/cl__tv_team_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="asdfa asdfasf asdf asdf asf dsafasd fads fasdf asdfsad asdf dsaf asfd safa" />

    <TextView
        android:id="@+id/cl__tv_q_sign"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="(Q)" />
</LinearLayout>