Положение кнопки меняется, когда заголовок слишком длинный

#android #android-layout #user-interface

#Android #android-макет #пользовательский интерфейс

Вопрос:

В настоящее время я работаю над приложением для викторины. Есть вопрос и четыре возможных варианта ответа. Каждый вариант ответа представлен кнопкой. Четыре кнопки выровнены по прямоугольнику.

Проблема: если заголовок кнопки слишком длинный, положение кнопки немного меняется, и кнопка скользит вниз.

Вопрос: Есть ли решение этой проблемы? Я не хочу, чтобы кнопка меняла свое положение.

XML-код

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/background" >

    <TextView
        android:id="@ id/tv_voc_trainer_question"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="44dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:gravity="center"
        android:text="This is my title!"
        android:textSize="20sp" />

    <LinearLayout
        android:id="@ id/ll_voc_trainer_first_answer_row"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@ id/tv_voc_trainer_question"
        android:layout_marginTop="40dp"
        android:orientation="horizontal" >

        <Button
            android:id="@ id/bu_first_answer_possibility"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:background="@drawable/blue_button"
            android:text="Answer 1" />

        <Button
            android:id="@ id/bu_second_answer_possibility"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:background="@drawable/blue_button"
            android:text="Answer 2 is very long!" />
    </LinearLayout>

    <LinearLayout
        android:id="@ id/ll_voc_trainer_second_answer_row"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@ id/ll_voc_trainer_first_answer_row"
        android:orientation="horizontal" >

        <Button
            android:id="@ id/bu_third_answer_possibility"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:background="@drawable/blue_button"
            android:text="Answer 3" />

        <Button
            android:id="@ id/bu_fourth_answer_possibility"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:layout_weight="1"
            android:background="@drawable/blue_button"
            android:text="Answer 4" />
    </LinearLayout>

    <ImageView
        android:id="@ id/img_trainer_answer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@ id/ll_voc_trainer_second_answer_row"
        android:layout_marginTop="25dp"
        android:layout_centerHorizontal="true"
        android:contentDescription="answer" />

</RelativeLayout>
 

Этот снимок экрана иллюстрирует проблему. Кнопка 2 имеет более длинный заголовок, и поэтому его положение автоматически изменяется.

Положение второй кнопки в первой строке изменилось из-за заголовка

Комментарии:

1. Попробуйте ImageButton вместо Button

2. я думаю, что этот вопрос задавался раньше …. попробуйте выполнить поиск и найти на него ответ..

3. @null, но на моем конце 2-я кнопка не похожа на другие после использования Android: baselineAligned=»false» . с вами все в порядке.

Ответ №1:

Попробуйте использовать это в своем линейном макете:

 android:baselineAligned="false"
 

Ответ №2:

 Try this way,hope this will help you to solve your problem.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="10dp">

    <TextView
        android:id="@ id/tv_voc_trainer_question"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="This is my title!"
        android:textSize="20sp" />

    <LinearLayout
        android:id="@ id/ll_voc_trainer_first_answer_row"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:gravity="center">

        <Button
            android:id="@ id/bu_first_answer_possibility"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/blue_button"
            android:gravity="center"
            android:text="Answer 1" />

        <Button
            android:id="@ id/bu_second_answer_possibility"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_weight="1"
            android:background="@drawable/blue_button"
            android:gravity="center"
            android:text="Answer 2 is very long!" />
    </LinearLayout>

    <LinearLayout
        android:id="@ id/ll_voc_trainer_second_answer_row"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:gravity="center">

        <Button
            android:id="@ id/bu_third_answer_possibility"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/blue_button"
            android:gravity="center"
            android:text="Answer 3" />

        <Button
            android:id="@ id/bu_fourth_answer_possibility"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_weight="1"
            android:background="@drawable/blue_button"
            android:gravity="center"
            android:text="Answer 4" />
    </LinearLayout>

    <ImageView
        android:id="@ id/img_trainer_answer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:contentDescription="answer" />

</LinearLayout>