2012-06-11 96 views
18

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

<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); 

结果是不好的垂直对齐方式。

回答

12

由于您选择的尺寸,您现有的布局不能希望将文本居中。您已将按钮高度设置为30dp,您的textSize为50dp,无论出于何种原因,Android无法处理该内容并将文本居中。如果你让按钮变大或文字变小,你会看到对中的效果。

+0

如果身高是30DP那么什么是采用Android的':layout_height = “WRAP_CONTENT”'? –

+0

@hotveryspicy - 将按钮布局放入一个xml并加载它,您会发现'wrap_content'似乎并不在意这种情况下文本的溢出。我不知道为什么会发生这种情况,但会发生什么情况(至少在通过Eclipse的可视化布局查看时,我没有将它放在设备上)。 – mah

+0

感谢但删除android:layout_height或android:layout_width在RuntimeException中解析。 – dieters

-1
<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" /> 

这为我工作

0

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

1

有三种系统需要考虑。 XML布局设计师,模拟器和真实手机。如果您指定gravity =“center”,按钮中的文本将如下所示。 在xml布局设计器中,它看起来像最左边的字母在按钮的中心,但其余的字母在右边。 (看起来不正确) 在模拟器中,文字显示在中心。 (正确) 在电话中,文字显示在中间。 (正确)

+0

感谢这个答案,我花了15分钟想知道我做错了什么,结果它只是'看起来不正确 –

24

这很容易,你把这个:

android:textAlignment="gravity" 

这项工作时,你有这样的:

android:gravity="center"