所以我想要一个带有2个按钮的标题。这些按钮应该贴在文本旁边的左侧,当文本变得太长时,它应该在2行上流动。
我能够通过给textView一个maxwidth来复制它,但是这会导致textview获取maxwidth,即使它在2行回流。因此,我的按钮不再在文本旁边对齐。
像这样:
如何让textView获取所需的宽度,而不是我告诉它使用的宽度?
答案 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 :(得分: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>
所以你可以在线性布局完成之下添加内容
我希望它能帮到你,你会得到你的解决方案。
答案 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 - 将所需视图的左侧与另一个视图的右侧对齐。