按钮文字未居中

4
我有一些按钮位于复杂的布局中。问题是,无论我做什么,按钮内的文本都无法居中对齐。我尝试添加android:gravity="center",我尝试从代码中设置重心,我尝试删除按钮上所有的格式。我做错了什么?按钮上的文本需要居中对齐。
以下是我的布局:
<?xml version="1.0" encoding="utf-8"?>

<FrameLayout android:layout_width="wrap_content"
    android:layout_height="130dp" android:layout_gravity="center"
    android:orientation="vertical">
    <!-- android:background="@drawable/picture_frame_94x94_suggested_matches" -->


    <ImageView android:layout_width="wrap_content"
        android:src="@drawable/picture_unknown" android:layout_height="fill_parent"
        android:scaleType="centerInside" android:paddingTop="12dp"
        android:paddingBottom="40dp" android:id="@+id/suggest_icon"
        android:layout_gravity="center"></ImageView>
    <TextView android:layout_width="wrap_content"
        android:layout_gravity="center_horizontal|bottom"
        android:paddingLeft="4dp" android:paddingRight="4dp"
        android:layout_height="wrap_content" android:id="@+id/suggest_name"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:paddingBottom="12dp" android:textColor="@color/black"></TextView>

</FrameLayout>

<LinearLayout android:orientation="horizontal"
    android:layout_gravity="center_horizontal" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:layout_weight="0.4">
    <Button android:id="@+id/unmatch_button" android:text="Un-match" android:textColor="@color/white" 
        android:background="@drawable/button_background" android:layout_gravity="center_vertical"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_marginRight="8dp" android:layout_marginLeft="8dp" android:gravity="center"
        android:visibility="gone"  android:textAppearance="?android:attr/textAppearanceMedium" />
    <Button android:id="@+id/nextmatch_button" android:text="@string/next" android:textColor="@color/white" 
        android:background="@drawable/button_background" android:layout_gravity="center_vertical"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_marginRight="8dp" layout_marginLeft="8dp" android:gravity="center"
        android:visibility="gone"  android:textAppearance="?android:attr/textAppearanceMedium" />
    <Button android:id="@+id/donematchpicker_button" android:text="@string/done" android:textColor="@color/white" 
        android:background="@drawable/button_background" android:layout_gravity="center_vertical"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_marginRight="8dp" layout_marginLeft="8dp" android:gravity="center"
        android:visibility="gone"  android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
<TextView android:layout_width="wrap_content"
    android:layout_gravity="center_horizontal|bottom"
    android:paddingLeft="4dp" android:paddingRight="4dp"
    android:layout_height="wrap_content" android:id="@+id/suggest_count"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:paddingBottom="12dp" android:textColor="@color/black"></TextView>

<include layout="@layout/facebook_list" android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

<View android:id="@+id/list_devider" android:layout_width="fill_parent"
    android:layout_height="1dp" android:background="?android:attr/listDivider"
    android:visibility="gone" />

<LinearLayout android:orientation="horizontal" 
    android:layout_weight="0.4" android:layout_gravity="center_horizontal"
    android:layout_width="wrap_content" android:layout_height="wrap_content">
    <Button android:id="@+id/exit_button" android:text="@string/exit" android:textColor="@color/white" 
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:background="@drawable/button_background" android:layout_marginRight="8dp"
        layout_marginLeft="8dp" android:visibility="gone" android:gravity="center"
        android:layout_marginTop="12dp"  android:textAppearance="?android:attr/textAppearanceMedium" />
    <Button android:id="@+id/donematch_button" android:text="@string/done" android:textColor="@color/white" 
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:background="@drawable/button_background" android:layout_marginRight="8dp"
        layout_marginLeft="8dp" android:visibility="gone" android:gravity="center"
        android:layout_marginTop="12dp"  android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

这是对话框背景的XML代码:

<?xml version="1.0" encoding="UTF-8"?>

<solid android:color="#969798" />
<stroke android:width="3dp" android:color="#7dd6ee" />

     <corners android:bottomRightRadius="6dp" android:bottomLeftRadius="6dp" 
 android:topLeftRadius="6dp" android:topRightRadius="6dp"/> 

截图: http://i39.tinypic.com/fc8aoo.png

这是示例按钮的初始化:

        nextButton = (Button)findViewById(R.id.nextmatch_button);
    nextButton.setVisibility(View.VISIBLE);
    nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new Thread(new Runnable() {
                public void run() {
                // bunch of code
    });     
    nextButton.setGravity(Gravity.CENTER);

这是按钮背景的定义:

 <?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/button_small_hover" /> 
    <item android:state_focused="true" android:drawable="@drawable/button_small_hover" /> 
    <item android:state_enabled="false" android:drawable="@drawable/button_small2_disabled" />
    <item android:drawable="@drawable/button_small2" /> 
</selector>

无论我怎么做,为什么文本总是左对齐而不是居中?我似乎无法弄清楚原因。

1
只需从XML中的button标签中删除layout_gravity,保留gravity="center"并检查。 - Sumant
4个回答

3

设置按钮的等量填充,例如:

nextButton.setPadding(2,2,2,2);

希望这能解决问题。


0
在你的代码中,对于每个按钮,你都使用了
android:width="wrap_content"
所以无论文本的长度如何,按钮都不会占用太多空间,
因此没有必要将文本居中。

-1

我有一个简单的解决方案来实现这个,只需要在文本开头和结尾加上一些空格,例如 "android:text=" xyz "。


-1
尝试将您的按钮设置为固定宽度。
layout_width="100dip"

删除layout_gravity和gravity="center"都没有起作用。固定宽度也不行。无论如何还是谢谢。 - Shaul Rosenzweig
解决了,我添加了一些填充,它开始居中了。有趣的是如果没有填充就不会居中。但这就是解决方案。 - Shaul Rosenzweig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接