Cos*_*ihu 11 android android-constraintlayout
我需要一些有关Android布局的帮助.我有以下代码:
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<android.support.constraint.Guideline
android:id="@+id/guideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.725" />
<TextView
android:id="@+id/data_field_1_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="10dip"
android:layout_marginTop="10dip"
app:layout_constraintLeft_toLeftOf="@id/guideline"
app:layout_constraintRight_toLeftOf="@id/guideline2"
app:layout_constraintTop_toTopOf="parent"
tools:text="ACTIVE" />
<TextView
android:id="@+id/data_field_1_value"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="15dip"
android:layout_toEndOf="@id/data_field_1_name"
app:layout_constraintBaseline_toBaselineOf="@id/data_field_1_name"
app:layout_constraintLeft_toLeftOf="@id/guideline2"
app:layout_constraintRight_toRightOf="parent"
tools:text="1750" />
<TextView
android:id="@+id/data_field_2_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="10dip"
android:layout_marginTop="8dip"
app:layout_constraintLeft_toLeftOf="@id/guideline"
app:layout_constraintRight_toLeftOf="@id/guideline2"
app:layout_constraintTop_toBottomOf="@id/data_field_1_name"
tools:text="ACTIVE" />
<TextView
android:id="@+id/data_field_2_value"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="15dip"
android:layout_toEndOf="@id/data_field_2_name"
app:layout_constraintBaseline_toBaselineOf="@id/data_field_2_name"
app:layout_constraintLeft_toLeftOf="@id/guideline2"
app:layout_constraintRight_toRightOf="parent"
tools:text="1750" />
<TextView
android:id="@+id/data_field_3_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="10dip"
android:layout_marginTop="8dip"
app:layout_constraintLeft_toLeftOf="@id/guideline"
app:layout_constraintRight_toLeftOf="@id/guideline2"
app:layout_constraintTop_toBottomOf="@id/data_field_2_name"
tools:text="ACTIVE" />
<TextView
android:id="@+id/data_field_3_value"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="15dip"
android:layout_toEndOf="@id/data_field_3_name"
app:layout_constraintBaseline_toBaselineOf="@id/data_field_3_name"
app:layout_constraintLeft_toLeftOf="@id/guideline2"
app:layout_constraintRight_toRightOf="parent"
tools:text="1750" />
<TextView
android:id="@+id/value"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="15dip"
android:layout_marginStart="15dip"
android:textSize="25sp"
app:layout_constraintBaseline_toBaselineOf="@id/data_field_2_name"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
tools:text="17.40" />
<ImageView
android:id="@+id/flag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="0dp"
android:layout_marginTop="2dp"
android:src="@drawable/ic_launcher_background"
app:layout_constraintEnd_toEndOf="@+id/unit"
app:layout_constraintStart_toStartOf="@+id/unit"
app:layout_constraintTop_toTopOf="parent" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/unit"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:gravity="center_horizontal"
app:layout_constraintBaseline_toBaselineOf="@id/value"
app:layout_constraintStart_toEndOf="@+id/value"
tools:text="KG" />
<TextView
android:id="@+id/label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="15dip"
app:layout_constraintBaseline_toBaselineOf="@id/data_field_3_name"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/guideline"
tools:text="TOTAL" />
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果主值(17.40)太大,该值应该"椭圆化"结束,但它会超过"活动"文本.
PS:单位和标志应始终显示在主值的末尾.
你能帮我提一下建议吗?我尝试了很多想法,但没有找到解决方案.
ale*_*n02 23
0dp机器人:layout_width = "0dp"
Set Right_toRightOf 和Left_toRightOfapp:layout_constraintLeft_toRightOf ="@ + id/listingImageView" app:layout_constraintRight_toRightOf ="parent" app:layout_constraintTop_toTopOf ="parent"
小智 5
首先,您需要将android:ellipsize="end"和添加android:maxLines="1"到 TextView 中android:id="@+id/value"。然后你需要将价值和单位添加到水平链中。将链的起点连接到父级的起点,将链的终点连接到 Guideline 的起点/终点android:id="@+id/guideline"。
之后,值和单位将具有相同的宽度并填充父起点和 Guideline 之间的整个空间android:id="@+id/guideline"。要使宽度不同,您可以设置android:layout_width="wrap_content"为单位,也可以同时使用app:layout_constraintHorizontal_weight两者
代码可以是这样的:
<TextView
android:id="@+id/value"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="15dip"
android:layout_marginStart="15dip"
android:textSize="25sp"
android:ellipsize="end"
android:maxLines="1"
app:layout_constraintBaseline_toBaselineOf="@id/data_field_2_name"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toStartOf="@+id/unit"
tools:text="17.40000000" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:gravity="center_horizontal"
android:maxLines="1"
android:layout_marginEnd="8dp"
app:layout_constraintBaseline_toBaselineOf="@id/value"
app:layout_constraintStart_toEndOf="@+id/value"
app:layout_constraintEnd_toStartOf="@+id/guideline"
tools:text="KG" />
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
为了那个原因
1)您必须为此指定固定长度,textview宽度0dp将不起作用。
2)您需要将文本视图的 ellipsize 属性设置为“end”。
3) 将 maxlines 属性设置为 1。
对此进行了测试并且工作正常。
您可以根据需要保持固定宽度。
<TextView
android:id="@+id/value"
android:layout_width="140dp"
android:layout_height="wrap_content"
android:layout_marginEnd="15dip"
android:ellipsize="end"
android:maxLines="1"
android:layout_marginStart="15dip"
android:textSize="25sp"
app:layout_constraintBaseline_toBaselineOf="@id/data_field_2_name"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
tools:text="17.40000000000000" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3497 次 |
| 最近记录: |