Java 在Android中,按钮文本垂直对齐处于禁用状态

Java 在Android中,按钮文本垂直对齐处于禁用状态,java,android,button,Java,Android,Button,我的Android应用程序中的按钮文本对齐有问题。我在XML中定义了一个按钮,如下所示: <Button android:id="@+id/reportanissuebutton" android:layout_width="272sp" android:layout_height="32sp" android:text="@string/button_report_issue" android:textCol

我的Android应用程序中的按钮文本对齐有问题。我在XML中定义了一个按钮,如下所示:

<Button
        android:id="@+id/reportanissuebutton"
        android:layout_width="272sp"
        android:layout_height="32sp"
        android:text="@string/button_report_issue"
        android:textColor="#fff"
        android:textSize="18sp"
        android:gravity="center_vertical|center_horizontal"
        android:background="@xml/report_issue_button"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="40sp"/>

结果是:

我希望文本在垂直和水平方向上居中,就像我的应用程序中的所有其他按钮一样,但由于某种原因,这一个按钮会稍微向下偏移。我似乎不明白它为什么这样做,所以任何帮助都将不胜感激

编辑: 以下是按钮背景的XML:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="6dp" />
    <stroke android:color="#c2c2c2" android:width="2dp" />
    <gradient 
        android:angle="90"
        android:startColor="#000"
        android:endColor="#919191"/>
</shape>

使用

它肯定会解决你的问题

如果你觉得这很有用,那么别忘了把它标记为答案

致以最良好的祝愿


~Anup

试试这个:dip在不同设备上的大小要比sp好得多,并且声明默认情况下重力不会完全居中

<Button
    android:id="@+id/reportanissuebutton"
    android:layout_width="272dip"
    android:layout_height="32dip"
    android:text="@string/button_report_issue"
    android:textColor="#fff"
    android:textSize="18dip"
    android:background="@xml/report_issue_button"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="40sp"/>

另外:当字体对于按钮来说太高时,我也会遇到同样的情况。试着稍微减小字体的大小和/或增加按钮的高度。。。。这解决了我的问题。

试试这个:

android:includeFontPadding="false"

它帮助我解决了一个类似的问题。

如果您以编程方式构建视图,请使用以下方法:

button.setIncludeFontPadding(false);
这对我很有用:

android:gravity="fill_vertical"
android:layout_gravity="center_vertical"

希望有帮助

真正完整的答案是

   <item name="android:includeFontPadding">false</item>
   <item name="android:paddingTop">0dp</item>
   <item name="android:paddingBottom">0dp</item>
false
0dp
0dp
…在某些情况下,所需的按钮高度与字体大小相比太小。

这对我来说很有效:

android:gravity="fill_vertical"
android:layout_gravity="center_vertical"

我对垂直文本对齐有问题。
事实证明,这是因为通过设置
android:linespaccingextra

因此,请确保没有指定或设置它(以防必须覆盖父样式)

我用这个:

    <com.google.android.material.button.MaterialButton
    android:minWidth="1dp"
    android:gravity="center_horizontal"
    android:text="O\nP\nC\nO\nN\nE\nS"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">


我只是添加了一个换行符

不,这就是它现在的样子:我还将把我用作按钮背景的XML添加到原始问题中。我不确定我是否理解您的问题,我在上面评论中发布的图像显示了将
android:layou height=“32sp”
替换为
android:layou height=“32sp”的结果=“wrap_content”
文本已居中…您还想更改什么?它不是垂直居中,顶部的空间比底部的空间大。您是否尝试过删除重力标记或仅使用垂直标记?我想您可以尝试设置padding@Rosalie:我设置了android:paddingBottom=“3sp“这似乎使它排列正确。我仍然很好奇为什么这是整个应用程序中唯一一个不能自动对齐文本的按钮。加上将paddingTop和paddingBottom设置为0dp,这一点很有帮助。最后,一些聪明的家伙说出了正确的答案,而不是每个安卓开发人员都知道的事情!