29

我的问题很简单。如何将文本集中在android中的按钮上?我尝试将填充设置为 0,将重力设置为中心,但是当我运行它时,结果仍然是文本是水平居中但不是垂直的。文本有点移到底部。

<Button
    android:id="@+id/btnSame"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="10dip"
    android:layout_marginLeft="10dip"
    android:layout_marginRight="10dip"
    android:background="@drawable/layout_button_different"
    android:gravity="center_vertical|center_horizontal"
    android:height="30dp"
    android:padding="0dip"
    android:text="@string/equals"
    android:textColor="@drawable/layout_button_different"
    android:textSize="50dp"
    android:width="70dp" />

我也相关:在活动中我这样做:

btnEquals.setCompoundDrawablesWithIntrinsicBounds(null,getResources().getDrawable(R.drawable.up2), null, null);
btnEquals.setPadding(0, 5, 0, 0);
btnEquals.setTextSize(15);

这有效,但在此之后我设置了这个:

btnEquals.setCompoundDrawables(null, null, null, null);
btnEquals.setPadding(0, 0, 0, 0);

结果是垂直对齐错误。

4

7 回答 7

48

这很容易,你可以这样说:

android:textAlignment="center"
于 2014-06-19T10:19:00.567 回答
23

由于您选择的尺寸,您现有的布局不能希望使文本居中。您已将按钮高度设置为30dp并且您的 textSize 为50dp,无论出于何种原因,Android 都无法处理该问题并将文本居中。如果你让你的按钮更大或者你的文本更小,你会发现居中是有效的。

于 2012-06-11T10:50:38.007 回答
1

需要考虑三个系统。xml 布局设计器、模拟器和真机。如果您指定gravity="center",按钮中的文本将如下所示。在 xml 布局设计器中,看起来最左边的字母位于按钮的中心,但其余字母位于右侧。(看起来不正确)在模拟器中,文本在中心显示得很好。(正确)在电话中,文本在中心显示得很好。(正确的)

于 2013-12-27T02:54:21.723 回答
1

您可以在布局 xml 代码中将此行添加到您的 Button 中:

android:gravity="center"
于 2020-04-28T03:02:05.330 回答
0

您也可以在 setPadding 中使用负数。如果您的字体很大而您的按钮很小,这可能会有所帮助。如果仍然偏离中心,请尝试将顶部或底部设置为更负数。

于 2013-12-20T23:08:57.260 回答
0

您只需将layout_height设置为wrap_content并将padding属性更改为您想要的任何值

于 2021-01-28T15:03:23.403 回答
-2
<Button
                android:id="@+id/AnswerE"
                style="@style/defaultbuttonstyle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:onClick="AnswerCheck"
                android:text=" E "
                android:textStyle="bold" />

这对我有用

于 2012-10-08T10:11:06.917 回答