Выравнивание кнопок справа от центра - Android - PullRequest
0 голосов
/ 16 января 2012

У меня возникают проблемы с выравниванием текста кнопки в приложении Android. В настоящее время текст моей кнопки выравнивается по левому краю текста в центре кнопки, как показано:

| Пробел | Текст здесь |

Я пытался использовать gravity = "center_horizontal | center_vertical" безрезультатно. Я попытался добавить новую кнопку в совершенно отдельный проект, и это все еще имеет место. Также это делается в LinearLayouts и RelativeLayouts.

Заранее спасибо за помощь.

Вот один из файлов макета. Однако он делает это во всех из них, в том числе и в других проектах. Кроме того, все 3 кнопки на этом макете имеют одинаковую проблему.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
    android:layout_width="wrap_content"
    android:text="@string/history_delete_record"
    android:id="@+id/History_Delete_Record"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_gravity="center_horizontal|center_vertical"></Button>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/History_Delete_Record"
    android:layout_alignLeft="@+id/History_Delete_Record"
    android:id="@+id/History_Open_Details"
    android:text="@string/history_open_record"></Button>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/History_Cancel"
    android:text="@string/cancel"
    android:layout_below="@+id/History_Open_Details"
    android:layout_alignLeft="@+id/History_Open_Details"
    android:layout_marginTop="19dp">
</Button>
</RelativeLayout>

1 Ответ

0 голосов
/ 17 января 2012

Вот простая реализация кнопки с центрированным текстом:

<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myBtn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:gravity="center_horizontal|center_vertical"
    android:text="Button text!" />

Проблема с вашим кодом заключается в том, что вы устанавливаете ширину в пикселях, когда вам следует использовать атрибут xml android:layout_width="wrap_content", который обернет текст кнопки, чтобы соответствовать представлению соответственно.

Также обратите внимание, что вы никогда не должны устанавливать ширину вида в пикселях, так как это не будет хорошо работать при разных размерах экрана и плотности. Вместо использования «px» укажите ширину в «dp», независимую от плотности единицу измерения. Для получения дополнительной информации по этой теме см. post .

EDIT Вот мой предложенный XML-код, который вы используете для макета:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/History_Delete_Record"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="@string/history_delete_record" >
    </Button>

    <Button
        android:id="@+id/History_Open_Details"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/History_Delete_Record"
        android:layout_alignRight="@+id/History_Delete_Record"
        android:layout_below="@+id/History_Delete_Record"
        android:text="@string/history_open_record" >
    </Button>

    <Button
        android:id="@+id/History_Cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/History_Open_Details"
        android:layout_alignRight="@+id/History_Open_Details"
        android:layout_below="@+id/History_Open_Details"
        android:text="@string/cancel" >
    </Button>

</RelativeLayout>
...