如何对齐应该在2行上流动的文本旁边的按钮?

时间:2017-10-06 08:50:28

标签: android textview

所以我想要一个带有2个按钮的标题。这些按钮应该贴在文本旁边的左侧,当文本变得太长时,它应该在2行上流动。

我能够通过给textView一个maxwidth来复制它,但是这会导致textview获取maxwidth,即使它在2行回流。因此,我的按钮不再在文本旁边对齐。

像这样:

enter image description here

如何让textView获取所需的宽度,而不是我告诉它使用的宽度?

4 个答案:

答案 0 :(得分:1)

使用ConstraintLayout(因为我喜欢这种布局),这是一个完美的答案。

这是代码。

<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" >

    <android.support.constraint.ConstraintLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text"
        android:layout_marginTop="25dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:maxWidth="300dp">

        <TextView 
            android:layout_width = "wrap_content" 
            android:layout_height = "wrap_content" 
            android:maxWidth="300dp" 
            android:text="Some layout is going to be created and whatever I do it won't cross the limit." 
            android:textSize="30sp" 
            app:layout_constraintBottom_toBottomOf="parent" 
            app:layout_constraintLeft_toLeftOf="parent" 
            app:layout_constraintTop_toTopOf="parent" 
            app:layout_constraintRight_toRightOf="parent" 
            android:layout_marginEnd="10dp" 
            android:layout_marginStart="10dp"/>

    </android.support.constraint.ConstraintLayout>

    <ImageView 
        android:layout_height="40dp" 
        android:background="#365987" 
        android:layout_width="40dp" 
        android:layout_marginStart="5dp"
        android:id="@+id/image" 
        app:layout_constraintLeft_toRightOf="@+id/text" 
        app:layout_constraintTop_toTopOf="@+id/text"/>

    <ImageView 
        android:id="@+id/image1" 
        android:layout_height="40dp" 
        android:background="#e85f11" 
        android:layout_width="60dp" 
        android:layout_marginStart="5dp"
        app:layout_constraintBottom_toBottomOf="@+id/image" 
        app:layout_constraintLeft_toRightOf="@+id/image" 
        app:layout_constraintTop_toTopOf="@+id/image"/>

</android.support.constraint.ConstraintLayout>

<强>输出:


  1. Text1

  2. Text2

  3. Text3

  4. Text4

  5. Text5

  6. Text5
  7. 无论文本是什么,它都不会越过最大宽度。宽度小于maxwidth的宽度将为wrap_content

答案 1 :(得分: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">

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

            <TextView
                android:id="@+id/tv_male"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginLeft="15dp"
                android:text="Male:"
                android:textColor="#111111"
                android:textSize="12dp" />

            <ImageView
                android:id="@+id/iv_male"
                android:layout_width="@dimen/_42sdp"
                android:layout_height="@dimen/_42sdp"
                android:layout_gravity="center_vertical"
                android:gravity="center_vertical"
                android:padding="10dp"
                android:src="@drawable/block_user" />

            <ImageView
                android:id="@+id/iv_female"
                android:layout_width="@dimen/_42sdp"
                android:layout_height="@dimen/_42sdp"
                android:layout_gravity="center_vertical"
                android:gravity="center_vertical"
                android:padding="10dp"
                android:src="@drawable/blocked_user" />
        </LinearLayout>

        <TextView
            android:id="@+id/tv_detail"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="This is something Demo Content"
            android:layout_marginLeft="@dimen/_15sdp"
            android:textColor="#111111"
            android:textSize="12dp" />

    </LinearLayout>

所以你可以在线性布局完成之下添加内容

enter image description here

我希望它能帮到你,你会得到你的解决方案。

答案 2 :(得分: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="wrap_content"
    android:descendantFocusability="blocksDescendants"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/zero"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:maxLines="2"
            android:paddingEnd="100dp"
            android:text="Simple textdfddfdf dfdfdfdfdf dfdf Sample  Text Sample Text" />

        <LinearLayout
            android:id="@+id/one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignEnd="@+id/zero"
            android:orientation="horizontal">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@mipmap/ic_launcher" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@mipmap/ic_launcher" />
        </LinearLayout>
    </RelativeLayout>

</LinearLayout>

在这里,你必须传递android:paddingEnd =&#34; 100dp&#34;。您可以从dimens.xml

进行管理

我希望。这将有助于完整

答案 3 :(得分:-1)

您应该使用ConstraintLayout

编译'com.android.support.constraint:constraint-layout:1.0.2'

我们来看一个图像的Planner部分的实例。

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/constraintLayout"
    <!-- Other attributes -->

    <TextView
    android:id="@+id/text"
    android:layout_width = "xxxdp"
    android:layout_height = "xxxdp"
    app:layout_constraintBottom_toBottomOf="@+id/constraintLayout"
    app:layout_constraintLeft_toLeftOf="@+id/constraintLayout"
    app:layout_constraintTop_toTopOf="@+id/constraintLayout"
    <!-- Other attributes --> />

    <ImageView
    android:id="@+id/image1"
    app:layout_constraintBottom_toBottomOf="@+id/text"
    app:layout_constraintLeft_toRightOf="@+id/text"
    app:layout_constraintTop_toTopOf="@+id/text"
    <!-- Other attributes --> />

    <ImageView
    android:id="@+id/image1"
    app:layout_constraintBottom_toBottomOf="@+id/text"
    app:layout_constraintLeft_toRightOf="@+id/image1"
    app:layout_constraintTop_toTopOf="@+id/image1"
    <!-- Other attributes --> />

使用的属性的定义。

layout_constraintTop_toTopOf - 将所需视图的顶部对齐到另一个顶部。

layout_constraintBottom_toBottomOf - 将所需视图的底部对齐到另一个底部。

layout_constraintLeft_toRightOf - 将所需视图的左侧与另一个视图的右侧对齐。