MaryT
@MaryT
IT люблю

Как в gridlayout сделать все кнопки одинакового размера?

Ребята, привет! При создании (верстки) калькулятора возникла вот такая фигня:
5a6738479a1c2816971328.jpeg

Такое происходит, если я для последних кнопочек (+, -, *, /) сделаю вот такую разметку:

<Button
      android:id="@+id/btnPlus"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:text="@string/Plus"
      android:textSize="28sp"
      app:layout_gravity="fill_horizontal">
</Button>


Вот разметка вообще всего калькулятора:

<?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="match_parent"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginStart="10dp"
    android:layout_marginBottom="10dp"
    android:layout_marginEnd="10dp"
    tools:context="com.example.mary.mysecondcalculator.MainActivity">

    <LinearLayout
        android:id="@+id/displayRoot"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="20dp"
        android:layout_marginStart="20dp"
        android:layout_marginTop="30dp"
        android:background="@color/displayBackground"
        android:orientation="horizontal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TextView
            android:id="@+id/display"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginEnd="20dp"
            android:layout_marginRight="20dp"
            android:gravity="right"
            android:textSize="42sp"
            android:textStyle="bold" />
    </LinearLayout>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/displayRoot"
        android:layout_marginBottom="108dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent">

        <android.support.v7.widget.GridLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:columnCount="4">

            <Button
                android:id="@+id/btnSeven"
                android:text="@string/Seven"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnEight"
                android:text="@string/Eight"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnNine"
                android:text="@string/Nine"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnPlus"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="@string/Plus"
                android:textSize="28sp"
                app:layout_gravity="fill_horizontal">
            </Button>

            <Button
                android:id="@+id/btnFour"
                android:text="@string/Four"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnFive"
                android:text="@string/Five"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnSix"
                android:text="@string/Six"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnMinus"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="@string/Minus"
                android:textSize="28sp"
                app:layout_gravity="fill_horizontal">
            </Button>

            <Button
                android:id="@+id/btnThree"
                android:text="@string/Three"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnTwo"
                android:text="@string/Two"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnOne"
                android:text="@string/One"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnMultiply"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="@string/Multiply"
                android:textSize="28sp"
                app:layout_gravity="fill_horizontal">
            </Button>

            <Button
                android:id="@+id/btnCancel"
                android:text="@string/Cancel"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnZero"
                android:text="@string/Zero"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnEquals"
                android:text="@string/Equals"
                android:textSize="28sp">
            </Button>

            <Button
                android:id="@+id/btnDivide"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="@string/Divide"
                android:textSize="28sp"
                app:layout_gravity="fill_horizontal">
            </Button>

        </android.support.v7.widget.GridLayout>
    </FrameLayout>


</android.support.constraint.ConstraintLayout>


Вот кусочек из сборки, куда я подключала библиотеку:
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    compile 'com.android.support:gridlayout-v7:26.1.0'
}


тестирую на эмуляторе nexus one (api 25)
Вопрос, собсна - как сделать все кнопки одинаковыми? Попробовала поменять ширину кнопок на wrap-content - разумеется, все кнопки полезли за предел экрана. Гугыл особо не помог :(
Немного информации, чтобы сильно палками не били: я в андроиде новичок (с пол-месяца), имеются знания java (варюсь на протяжении 4 месяцев), html, css, js и прочей лабуды, так что в принципе общий язык в обсуждении смогу найти.
Прошу сильно не ругать, так как стоит цель переквалифицироваться, очень хочу научиться, тренируюсь на кошках.
Всем огромное спасибо за помощь!
  • Вопрос задан
  • 684 просмотра
Пригласить эксперта
Ответы на вопрос 1
Попробуйте так:
<android.support.v7.widget.GridLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:columnCount="4">

            <Button
                android:id="@+id/btnSeven"
                android:text="@string/Seven"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnEight"
                android:text="@string/Eight"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnNine"
                android:text="@string/Nine"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnPlus"
                android:text="@string/Plus"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnFour"
                android:text="@string/Four"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnFive"
                android:text="@string/Five"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnSix"
                android:text="@string/Six"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnMinus"
                android:text="@string/Minus"
                android:textSize="28sp" />

            <Button
                android:id="@+id/btnThree"
                android:text="@string/Three"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnTwo"
                android:text="@string/Two"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnOne"
                android:text="@string/One"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnMultiply"
                android:text="@string/Multiply"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnCancel"
                android:text="@string/Cancel"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnZero"
                android:text="@string/Zero"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnEquals"
                android:text="@string/Equals"
                android:textSize="28sp"/>

            <Button
                android:id="@+id/btnDivide"
                android:text="@string/Divide"
                android:textSize="28sp"/>

        </android.support.v7.widget.GridLayout>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы