对于宽度较小的手机,文本超出范围

Posted

技术标签:

【中文标题】对于宽度较小的手机,文本超出范围【英文标题】:Text goes out of bounds for phones with a smaller width size 【发布时间】:2020-05-01 16:13:33 【问题描述】:

我有一组代码适合所有宽度为 1080 或更大的手机,但是对于宽度为 720 的手机,我最后一个 TextView 的 textSize 为 20dp,文本“价格”超出了手机宽度的一半。所以基本上,对于宽度为 1080 或更大的手机,我想保持我的 textSize 为 20dp,因为它适合这些手机,但对于宽度为 720 的手机,我想减少它的 textSize。我该怎么做?

需要这个才能在 android 5.0 及更高版本上工作

<androidx.constraintlayout.widget.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_
android:layout_
tools:context=".MainActivity">

<ScrollView
android:layout_
android:layout_
android:background="#00FFFFFF"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:context=".MainActivity">


<androidx.constraintlayout.widget.ConstraintLayout
android:layout_
android:layout_
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">                

        <Button
            android:id="@+id/button1"
            android:layout_
            android:layout_
            android:layout_marginStart="268dp"
            android:layout_marginLeft="268dp"
            android:layout_marginTop="96dp"
            android:onClick="onButtonClick"
            android:text="Go"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <EditText
            android:id="@+id/Name1"
            android:layout_
            android:layout_
            android:layout_marginTop="85dp"
            android:ems="10"
            android:hint="Symbol"
            android:inputType="textPersonName"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <Spinner
            android:id="@+id/spinner1"
            android:layout_
            android:layout_
            android:layout_marginStart="76dp"
            android:layout_marginLeft="76dp"
            android:layout_marginTop="92dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <EditText
            android:id="@+id/Price1"
            android:layout_
            android:layout_
            android:layout_marginStart="192dp"
            android:layout_marginLeft="192dp"
            android:layout_marginTop="84dp"
            android:ems="10"
            android:hint="Amount"
            android:inputType="numberDecimal"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/text1"
            android:layout_
            android:layout_
            android:layout_marginStart="324dp"
            android:layout_marginLeft="324dp"
            android:layout_marginTop="100dp"
            android:text="Price"
            android:textSize="20dp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

首先添加end 约束。然后,考虑使用自动调整大小:developer.android.com/guide/topics/ui/look-and-feel/…. @CommonsWare 那是 android 8.0 或更高版本。 不,appcompat 自动调整大小也适用于旧设备。不过,请使用 app: 而不是 android: 作为属性命名空间前缀。 @CommonsWare 您能否在我的 中添加一些代码并将其作为答案提交,以便我查看它是如何完成的?我会投票并接受答案。 【参考方案1】:

我浏览了您的布局并尝试改进它,我将如何进行这样的布局。您正在使用ConstraintLayout,因此您希望彼此对齐视图。例如,您可以将您的价格调整到最右边,使其向左展开,并将其他视图向左推。

<ScrollView
    android:layout_
    android:layout_
    android:background="#00FFFFFF"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:context=".MainActivity">


    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_
        android:layout_
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <EditText
            android:id="@+id/Name1"
            android:layout_
            android:layout_
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp"
            android:hint="Symbol"
            android:inputType="textPersonName"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <Button
            android:id="@+id/button1"
            android:layout_
            android:layout_
            android:layout_marginTop="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="8dp"
            android:onClick="onButtonClick"
            android:text="Go"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/text1"
            app:layout_constraintTop_toTopOf="parent" />

        <Spinner
            android:id="@+id/spinner1"
            android:layout_
            android:layout_
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp"
            android:minWidth="120dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toEndOf="@+id/Name1"
            app:layout_constraintTop_toTopOf="parent" />

        <EditText
            android:id="@+id/Price1"
            android:layout_
            android:layout_
            android:layout_marginStart="8dp"
            android:layout_marginEnd="8dp"
            android:hint="Amount"
            android:inputType="numberDecimal"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/button1"
            app:layout_constraintStart_toEndOf="@+id/spinner1"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/text1"
            android:layout_
            android:layout_
            android:layout_marginTop="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="8dp"
            android:text="Price"
            android:textSize="20sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />


    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

【讨论】:

以上是关于对于宽度较小的手机,文本超出范围的主要内容,如果未能解决你的问题,请参考以下文章

取巧处理:UILabel(IOS开发) 超出宽度的文本省略号的问题

CSS怎样不让图片高度超出屏幕

具有 sizeToFits() 的标签超出范围

如何将 div 扩展到整个页面? [复制]

scikit-learn joblib 错误:多处理池 self.value 超出“i”格式代码的范围,仅适用于大型 numpy 数组

C#:在窗体中放了多个文本框,我想要在里面输入数字,但要规定它不能超出范围,若超出范围,那就要提示