Android button too low

问题: I'm making a quiz application on Android and I have an issue with one of my layout. When there is too much text (but the text fit in the button), the button is too low. I...

问题:

I'm making a quiz application on Android and I have an issue with one of my layout. When there is too much text (but the text fit in the button), the button is too low.

I don't know how to fix it, I tried to increase the buttons height, decrease the size but it doesn't change anything. Is it possible to fix the position ?

Here is my layout :

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ProgressBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:minHeight="30sp"
        android:progress="100"
        android:id="@+id/progressbar"
        android:progressTint="#2f9926"
        android:progressBackgroundTint="#636262"
        />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="15sp"
        android:layout_marginTop="10sp"
        android:textAlignment="textEnd"
        android:textSize="30sp"
        android:fontFamily="@font/caviardreamsbold"
        android:id="@+id/tv_no"/>

    <TextView
        android:layout_width="400sp"
        android:layout_marginTop="50sp"
        android:layout_marginBottom="40sp"
        android:textAlignment="center"
        android:textSize="40sp"
        android:fontFamily="@font/caviardreams"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        android:id="@+id/tv_question"
        />

    <ImageView
        android:layout_width="450sp"
        android:layout_height="200sp"
        android:layout_gravity="center"
        android:id="@+id/img"/>

    <View
        android:layout_width="match_parent"
        android:layout_height="0sp"
        android:layout_weight="1"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginStart="20sp"
        android:layout_marginEnd="20sp"
        android:layout_marginBottom="20sp">

        <Button
            android:layout_height="160sp"
            android:layout_width="250sp"
            android:textAllCaps="false"
            android:background="@drawable/button_multiple"
            android:layout_marginEnd="15sp"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:layout_weight="1"
            android:id="@+id/btn_one"/>

        <Button
            android:layout_height="160sp"
            android:layout_width="250sp"
            android:textAllCaps="false"
            android:background="@drawable/button_multiple"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:layout_weight="1"
            android:id="@+id/btn_two"/>

    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginStart="20sp"
        android:layout_marginEnd="20sp"
        android:layout_marginBottom="30sp">

        <Button
            android:layout_height="160sp"
            android:layout_width="250sp"
            android:textAllCaps="false"
            android:background="@drawable/button_multiple"
            android:layout_marginEnd="15sp"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:layout_weight="1"
            android:id="@+id/btn_three"/>

        <Button
            android:layout_height="160sp"
            android:layout_width="250sp"
            android:textAllCaps="false"
            android:background="@drawable/button_multiple"
            android:textColor="@android:color/black"
            android:textSize="18sp"
            android:layout_weight="1"
            android:id="@+id/btn_four"/>

    </LinearLayout>

</LinearLayout>

And here is a screenshot because it's hard to explain clearly : https://image.noelshack.com/fichiers/2019/10/6/1552145596-screenshot-20190309-162509.jpg


回答1:

Add

android:gravity="center"

to the LinearLayouts


回答2:

You can use this library - it will make the text on your view to resize according to the amount of text:

In your gradle:

implementation 'me.grantland:autofittextview:0.2.1'

And now just put it in your XML:

<me.grantland.widget.AutofitTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textSize="12sp"
app:minTextSize="8sp" />

Edit - I noticed that you are using fixed size on your view, first use sp as text size and not vire size and second don't use fixed sizes in your layout because your layout will just not be responsive, instead use ConstraintLayout like this :

<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:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Fragments.MenusDesign.BookMenu.BookMenu">


<ProgressBar
    android:id="@+id/progressbar"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:layout_width="0dp"
    android:layout_height="29dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:minHeight="30sp"
    android:progress="100"
    android:progressBackgroundTint="#636262"
    android:progressTint="#2f9926"
    app:layout_constraintEnd_toStartOf="@+id/guideline6"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/tv_no"
    android:layout_width="0dp"
    android:layout_height="23dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:textAlignment="textEnd"
    android:textSize="30sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="@+id/guideline6"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/tv_question"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    android:textAlignment="center"
    android:textSize="40sp"
    app:layout_constraintBottom_toTopOf="@+id/img"
    app:layout_constraintEnd_toEndOf="@+id/tv_no"
    app:layout_constraintStart_toEndOf="@+id/img"
    app:layout_constraintTop_toBottomOf="@+id/tv_no" />

<ImageView
    android:id="@+id/img"
    android:layout_width="329dp"
    android:layout_height="153dp"
    android:layout_gravity="center"
    android:layout_marginTop="8dp"
    android:layout_marginBottom="8dp"
    app:layout_constraintBottom_toTopOf="@+id/btn_two"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />


<Button
    android:id="@+id/btn_one"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="152dp"
    android:layout_marginBottom="8dp"
    android:layout_weight="1"
    android:textAllCaps="false"
    android:textColor="@android:color/black"
    android:textSize="18sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="@+id/btn_two"
    app:layout_constraintStart_toStartOf="@+id/btn_two"
    app:layout_constraintTop_toTopOf="@+id/btn_two" />

<Button
    android:id="@+id/btn_two"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="347dp"
    android:layout_marginEnd="8dp"
    android:layout_weight="1"
    android:textAllCaps="false"
    android:textColor="@android:color/black"
    android:textSize="18sp"
    app:layout_constraintEnd_toStartOf="@+id/guideline6"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="@+id/img"
    app:layout_constraintTop_toTopOf="@+id/progressbar" />


<Button
    android:id="@+id/btn_three"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:textAllCaps="false"
    android:textColor="@android:color/black"
    android:textSize="18sp"
    app:layout_constraintBottom_toBottomOf="@+id/btn_one"
    app:layout_constraintEnd_toEndOf="@+id/btn_four"
    app:layout_constraintStart_toStartOf="@+id/btn_four"
    app:layout_constraintTop_toTopOf="@+id/btn_one" />

<Button
    android:id="@+id/btn_four"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    android:layout_weight="1"
    android:textAllCaps="false"
    android:textColor="@android:color/black"
    android:textSize="18sp"
    app:layout_constraintBottom_toBottomOf="@+id/btn_two"
    app:layout_constraintEnd_toEndOf="@+id/img"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="@+id/guideline6"
    app:layout_constraintTop_toTopOf="@+id/btn_two"
    app:layout_constraintVertical_bias="1.0" />

<androidx.constraintlayout.widget.Guideline
    android:id="@+id/guideline6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.5" />

  • 发表于 2019-03-11 22:45
  • 阅读 ( 170 )
  • 分类:sof

条评论

请先 登录 后评论
不写代码的码农
小编

篇文章

作家榜 »

  1. 小编 文章
返回顶部
部分文章转自于网络,若有侵权请联系我们删除