【问题标题】:Button text not centering按钮文本未居中
【发布时间】:2012-01-02 10:03:31
【问题描述】:

我在一个非常复杂的布局上有一堆按钮。问题是,无论我做什么,按钮都不会在其中居中显示文本。我尝试添加 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>

是什么导致文本左对齐而不是居中?我似乎无法弄清楚。

【问题讨论】:

  • 只需从 xml 中的按钮标签中删除 layout_gravity 并保持gravity="center" 并检查。

标签: android android-layout


【解决方案1】:

设置按钮的相等填充,如:

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

希望这能解决问题。

【讨论】:

    【解决方案2】:

    在您的代码中,对于每个按钮,您都是

    android:width="wrap_content"

    所以无论文本的长度如何,按钮都不会占用那么多空间,

    所以不存在使文本居中的问题

    【讨论】:

      【解决方案3】:

      尝试将按钮设置为固定宽度。

      layout_width="100dip"
      

      【讨论】:

      • 删除 layout_gravity &gravity="center" 无效。固定宽度也没有。还是发送吧。
      • 想通了,我添加了一些填充,它开始居中。有趣的是,如果没有填充,它不会。但这就是解决方案。
      【解决方案4】:

      我有一个随意的解决方案,只需在文本的开头和结尾留一些空格,例如“android:text="xyz"。

      【讨论】:

        猜你喜欢
        • 2020-10-20
        • 2020-04-16
        • 2022-08-18
        • 1970-01-01
        • 2012-07-28
        • 2011-11-23
        • 2017-03-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多