Кнопка Android теряет выравнивание текста после setText - PullRequest
2 голосов
/ 16 ноября 2010

Я использую xml, чтобы нарисовать индикатор прогресса вращения вместе с текстом. В нижней части экрана у меня есть TableLayout с двумя кнопками, которые центрированы на странице, причем каждый текст также центрирован.

<RelativeLayout
        android:id="@+id/progresscontainer"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_horizontal">


        <ProgressBar android:id="@+id/progress_bar" 
            style="?android:attr/progressBarStyleSmall" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:paddingRight="10dp" />

        <TextView android:id="@+id/progress_text" 
            android:layout_toRightOf="@id/progress_bar"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="First text" />

</RelativeLayout>

<TableLayout
    android:id="@+id/buttonbar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:paddingTop="3dip"
    android:background="@color/buttonbar"
    android:stretchColumns="0,1">

    <TableRow>

        <Button android:id="@+id/button1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Button1" />

        <Button android:id="@+id/button2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Button2" />

    </TableRow>

</TableLayout>

В коде у меня есть исполняемый файл, который через пару секунд изменяет текст в текстовом представлении progress_text.

private Runnable mTimeTask = new Runnable() {

   public void run() {
       TextView progressText = (TextView) findViewById(R.id.progress_text);
       progressText.setText("Second text");
   }

};

Проблема в том, что после этого setText (), когда я фокусируюсь на одной из кнопок, текст теряет выравнивание по центру и проходит влево. Что я делаю не так?

Ответы [ 3 ]

7 голосов
/ 23 декабря 2011

У меня тоже была эта проблема. Кажется, что setText() меняет настройки гравитации, поэтому мне пришлось повторно применить их, используя:

button.setGravity(Gravity.CENTER_HORIZONTAL);
3 голосов
/ 18 ноября 2013

Попробуйте сбросить заполнение до:

button.setPadding(left, top, right, bottom);

со значением:

button.setPadding(0, 0, 0, 0);
0 голосов
/ 05 января 2017

Ни один из ответов здесь не сработал для меня, поэтому я попытался найти свой собственный способ исправить это и возился с TextView, который имеет ту же проблему выравнивания, но когда я добавил строку android:maxLines="1", она неожиданно сработала, поэтому я попробовална кнопку, и это сработало.

Просто добавьте android:maxLines="1" к определению вашей кнопки, и выравнивание текста должно остаться после установки нового текста.

...