Android RelativeLayout 中的按钮文本偏移量

Android Button Text offset in RelativeLayout

我正在创建一个计算器来学习使用 Android Studio 进行编程的基础知识。在我为标准计算器屏幕创建一个非常基本的 RelativeLayout 时,屏幕上的第一个按钮的文本与所有其他按钮不对齐。 (甚至在科学和编程活动等其他屏幕上也是如此)为什么一个按钮只会显示不对齐的文本?请注意,它在物理 phone 上与在模拟器 phone 屏幕上相同,因此它不是某种类型的模拟器/实际硬件差异。我在图像上画了一条线以更好地显示对齐差异示例。还尝试了 Gravity="Center" 并且它不会更改文本对齐方式。

Button
    android:id="@+id/stnd_btn_mc"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:layout_below="@+id/mytextView"
    android:onClick="stnd_btn_memory"
    android:paddingTop="0dp"
    android:gravity="center"
    android:text="MC" />
<Button
    android:id="@+id/stnd_btn_mr"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:layout_alignBaseline="@+id/stnd_btn_mc"
    android:layout_alignBottom="@+id/stnd_btn_mc"
    android:layout_alignLeft="@+id/stnd_btn_sqrt"
    android:layout_toEndOf="@+id/stnd_btn_mc"
    android:layout_toRightOf="@+id/stnd_btn_mc"
    android:onClick="stnd_btn_memory"
    android:text="MR" />
<Button
    android:id="@+id/stnd_btn_mplus"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:layout_alignBaseline="@+id/stnd_btn_mc"
    android:layout_alignBottom="@+id/stnd_btn_mc"
    android:layout_alignLeft="@+id/stnd_btn_exp"
    android:layout_toRightOf="@+id/stnd_btn_mr"
    android:onClick="stnd_btn_memory"
    android:text="M+" />
<Button
    android:id="@+id/stnd_btn_Memoryminus"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:layout_alignBaseline="@+id/stnd_btn_mc"
    android:layout_alignBottom="@+id/stnd_btn_mc"
    android:layout_alignLeft="@+id/stnd_btn_overx"
    android:layout_toEndOf="@+id/stnd_btn_mplus"
    android:layout_toRightOf="@+id/stnd_btn_mplus"
    android:onClick="stnd_btn_memory"
    android:text="M-" />

Calculator Simulator Screen

这是XML要求的整个页面。谢谢。

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/content_standard"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.robertgenthner.standardactivity.StandardActivity"
    tools:showIn="@layout/app_bar_standard">
    <TextView
        android:id="@+id/mytextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:gravity="right"
        android:text="0.00"
        android:textSize="40dp"
        android:textStyle="bold" />
    <!--FIRST ROW OF BUTTONS START-->
    <Button
        android:id="@+id/stnd_btn_mc"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_below="@+id/mytextView"
        android:onClick="stnd_btn_memory"
        android:gravity="center"

        android:text="MC" />
    <Button
        android:id="@+id/stnd_btn_mr"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignBaseline="@+id/stnd_btn_mc"
        android:layout_alignBottom="@+id/stnd_btn_mc"
        android:layout_alignLeft="@+id/stnd_btn_sqrt"
        android:layout_toEndOf="@+id/stnd_btn_mc"
        android:layout_toRightOf="@+id/stnd_btn_mc"
        android:onClick="stnd_btn_memory"
        android:text="MR" />
    <Button
        android:id="@+id/stnd_btn_mplus"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignBaseline="@+id/stnd_btn_mc"
        android:layout_alignBottom="@+id/stnd_btn_mc"
        android:layout_alignLeft="@+id/stnd_btn_exp"
        android:layout_toRightOf="@+id/stnd_btn_mr"
        android:onClick="stnd_btn_memory"
        android:text="M+" />
    <Button
        android:id="@+id/stnd_btn_Memoryminus"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignBaseline="@+id/stnd_btn_mc"
        android:layout_alignBottom="@+id/stnd_btn_mc"
        android:layout_alignLeft="@+id/stnd_btn_overx"
        android:layout_toEndOf="@+id/stnd_btn_mplus"
        android:layout_toRightOf="@+id/stnd_btn_mplus"
        android:onClick="stnd_btn_memory"
        android:text="M-" />
    <!--FIRST ROW OF BUTTONS END-->
    <!--SECOND ROW OF BUTTONS START-->
    <Button
        android:id="@+id/stnd_btn_percent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/stnd_btn_mr"
        android:layout_marginTop="10dp"
        android:onClick="stnd_btn_functions"
        android:text="%" />
    <Button
        android:id="@+id/stnd_btn_sqrt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_percent"
        android:layout_toEndOf="@+id/stnd_btn_percent"
        android:layout_toRightOf="@+id/stnd_btn_percent"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="√" />
    <Button
        android:id="@+id/stnd_btn_exp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/stnd_btn_sqrt"
        android:layout_toEndOf="@+id/stnd_btn_sqrt"
        android:layout_toRightOf="@+id/stnd_btn_sqrt"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="X^2" />
    <Button
        android:id="@+id/stnd_btn_overx"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_exp"
        android:layout_toEndOf="@+id/stnd_btn_exp"
        android:layout_toRightOf="@+id/stnd_btn_exp"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="1/X" />
    <!--SECOND ROW OF BUTTONS END-->
    <!--THIRD ROW OF BUTTONS START-->
    <Button
        android:id="@+id/stnd_btn_ce"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/stnd_btn_percent"
        android:layout_marginTop="10dp"
        android:onClick="stnd_btn_functions"
        android:text="CE" />
    <Button
        android:id="@+id/stnd_btn_c"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/stnd_btn_ce"
        android:layout_alignBottom="@+id/stnd_btn_ce"
        android:layout_toEndOf="@+id/stnd_btn_ce"
        android:layout_toRightOf="@+id/stnd_btn_ce"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="C" />
    <Button
        android:id="@+id/stnd_btn_bksp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/stnd_btn_c"
        android:layout_toEndOf="@+id/stnd_btn_c"
        android:layout_toRightOf="@+id/stnd_btn_c"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="bksp" />
    <Button
        android:id="@+id/stnd_btn_divide"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_bksp"
        android:layout_toEndOf="@+id/stnd_btn_bksp"
        android:layout_toRightOf="@+id/stnd_btn_bksp"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="÷" />
    <Button
        android:id="@+id/stnd_btn_7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/stnd_btn_bksp"
        android:layout_marginTop="10dp"
        android:onClick="stnd_btn_numbers"
        android:text="7" />
    <!--THIRD ROW OF BUTTONS END-->
    <!--FORTH ROW OF BUTTONS START-->
    <Button
        android:id="@+id/stnd_btn_8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_7"
        android:layout_toEndOf="@+id/stnd_btn_7"
        android:layout_toRightOf="@+id/stnd_btn_7"
        android:onClick="stnd_btn_numbers"
        android:paddingLeft="10dp"
        android:text="8" />
    <Button
        android:id="@+id/stnd_btn_9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/stnd_btn_8"
        android:layout_toEndOf="@+id/stnd_btn_8"
        android:layout_toRightOf="@+id/stnd_btn_8"
        android:onClick="stnd_btn_numbers"
        android:paddingLeft="10dp"
        android:text="9" />
    <Button
        android:id="@+id/stnd_btn_multiply"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_9"
        android:layout_toEndOf="@+id/stnd_btn_9"
        android:layout_toRightOf="@+id/stnd_btn_9"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="X" />
    <Button
        android:id="@+id/stnd_btn_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/stnd_btn_7"
        android:layout_marginTop="10dp"
        android:onClick="stnd_btn_numbers"
        android:text="4" />
    <!--FORTH ROW OF BUTTONS END-->
    <!--FIFTH ROW OF BUTTONS START-->
    <Button
        android:id="@+id/stnd_btn_5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_4"
        android:layout_toEndOf="@+id/stnd_btn_4"
        android:layout_toRightOf="@+id/stnd_btn_4"
        android:onClick="stnd_btn_numbers"
        android:paddingLeft="10dp"
        android:text="5" />
    <Button
        android:id="@+id/stnd_btn_6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/stnd_btn_5"
        android:layout_toEndOf="@+id/stnd_btn_5"
        android:layout_toRightOf="@+id/stnd_btn_5"
        android:onClick="stnd_btn_numbers"
        android:paddingLeft="10dp"
        android:text="6" />
    <Button
        android:id="@+id/stnd_btn_minus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_6"
        android:layout_toEndOf="@+id/stnd_btn_6"
        android:layout_toRightOf="@+id/stnd_btn_6"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="-" />
    <!--FIFTH ROW OF BUTTONS END-->
    <!--SIXTH ROW OF BUTTONS START-->
    <Button
        android:id="@+id/stnd_btn_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/stnd_btn_4"
        android:layout_marginTop="10dp"
        android:onClick="stnd_btn_numbers"
        android:text="1" />
    <Button
        android:id="@+id/stnd_btn_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_1"
        android:layout_toEndOf="@+id/stnd_btn_1"
        android:layout_toRightOf="@+id/stnd_btn_1"
        android:onClick="stnd_btn_numbers"
        android:paddingLeft="10dp"
        android:text="2" />
    <Button
        android:id="@+id/stnd_btn_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/stnd_btn_2"
        android:layout_toEndOf="@+id/stnd_btn_2"
        android:layout_toRightOf="@+id/stnd_btn_2"
        android:onClick="stnd_btn_numbers"
        android:paddingLeft="10dp"
        android:text="3" />
    <Button
        android:id="@+id/stnd_btn_plus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_3"
        android:layout_toEndOf="@+id/stnd_btn_3"
        android:layout_toRightOf="@+id/stnd_btn_3"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="+" />
    <!--SIXTH ROW OF BUTTONS END-->
    <!--SEVENTH ROW OF BUTTONS START-->
    <Button
        android:id="@+id/stnd_btn_posneg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/stnd_btn_1"
        android:layout_marginTop="10dp"
        android:onClick="stnd_btn_functions"
        android:text="±" />
    <Button
        android:id="@+id/stnd_btn_0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_posneg"
        android:layout_toEndOf="@+id/stnd_btn_posneg"
        android:layout_toRightOf="@+id/stnd_btn_posneg"
        android:onClick="stnd_btn_numbers"
        android:paddingLeft="10dp"
        android:text="0" />
    <Button
        android:id="@+id/stnd_btn_period"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/stnd_btn_0"
        android:layout_toEndOf="@+id/stnd_btn_0"
        android:layout_toRightOf="@+id/stnd_btn_0"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="." />
    <Button
        android:id="@+id/stnd_btn_equal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/stnd_btn_period"
        android:layout_toEndOf="@+id/stnd_btn_period"
        android:layout_toRightOf="@+id/stnd_btn_period"
        android:onClick="stnd_btn_functions"
        android:paddingLeft="10dp"
        android:text="=" />
</RelativeLayout>

如果您从第一个按钮中删除 paddingTop,文本应该对齐

编辑:

要整理代码,您还可以尝试使用网格布局(省去手动对齐所有内容的麻烦)

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_column="4">

    <Button
        android:id="@+id/stnd_btn_mc"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:onClick="stnd_btn_memory"
        android:text="MC" />
    <Button
        android:id="@+id/stnd_btn_mr"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:onClick="stnd_btn_memory"
        android:text="MR" />
    <Button
        android:id="@+id/stnd_btn_mplus"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:onClick="stnd_btn_memory"
        android:text="M+" />
    <Button
        android:id="@+id/stnd_btn_Memoryminus"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:onClick="stnd_btn_memory"
        android:text="M-" />
</GridLayout>