按钮和编辑文本的大小随 android API 21 变化

size of button and edittext change with android API 21

我正在开发一个 android 应用程序,它在 API 13 到 19 上运行良好,当我用 API 21 测试它时,按钮大小、edittext 和 textview 发生变化(变得更大)。我正在使用(match_parent 和 wrap_content)。我在网上发现我应该添加这些行 android:textAllCaps="false" android:stateListAnimator="@null" 但我得到了相同的结果 这是我的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="#ffffff"
xmlns:android="http://schemas.android.com/apk/res/android" >
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:textAllCaps="false"
android:stateListAnimator="@null"
android:layout_height="fill_parent"
android:background="#ffff" >

<ImageView
    android:id="@+id/logimage"
    android:layout_width="387px"
    android:layout_height="180px"
    android:textAllCaps="false"
    android:stateListAnimator="@null"
    android:layout_marginTop="40px"
    android:src="@drawable/logo_nearby"
    android:layout_centerHorizontal="true"
    />

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/btnstart"
    android:textSize="13sp"
    android:textAllCaps="false"
    android:stateListAnimator="@null"
    android:background="#8cd2fc"
    android:textColor="#ffffff"
    android:singleLine="true"
    android:layout_marginTop="80px"
    android:layout_centerHorizontal="true"
    android:text="Create account"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:layout_below="@id/logimage"/>

<Button
    android:layout_width="fill_parent"
    android:id="@+id/btnanonym"
    android:textSize="13sp"
    android:layout_centerHorizontal="true"
    android:layout_below="@+id/btnstart"
    android:layout_marginTop="30px"
    android:text="Connect as anonyme"
    android:background="#00b4e8"
    android:singleLine="true"
    android:textAllCaps="false"
    android:stateListAnimator="@null"
    android:textColor="#ffffff"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:layout_height="wrap_content" />
<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/btncnxuser"
    android:background="#00b4e8"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:layout_centerHorizontal="true"
    android:text="Connect as member"
    android:textColor="#ffffff"
    android:textAllCaps="false"
    android:stateListAnimator="@null"
    android:textSize="13sp"
    android:singleLine="true"
    android:layout_marginTop="85px"
    android:layout_below="@id/btnanonym"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="10px"
    android:id="@+id/txtinfo"
    android:text="You have already account ?"
    android:textColor="#000"
    android:singleLine="true"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:layout_centerHorizontal="true"
    android:layout_below="@id/btnanonym"/>
<com.facebook.login.widget.LoginButton
    android:layout_width="match_parent"
    android:id="@+id/logButton"
    android:layout_marginTop="30px"
    android:textAllCaps="false"
    android:stateListAnimator="@null"
    android:background="#3c5f9d"
    android:singleLine="true"
    android:text="Login with Facebook"
    android:textSize="12sp"
    android:textColor="#ffffff"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:layout_below="@+id/btncnxuser"
    android:layout_height="wrap_content">
</com.facebook.login.widget.LoginButton>

xml 使用 Edittext 的代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#ffffff"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" >

<ImageView
    android:id="@+id/logimage"
    android:layout_width="187sp"
    android:layout_height="50dp"
    android:layout_marginTop="20dp"
    android:src="@drawable/logo_nearby"
    android:layout_centerHorizontal="true"
    />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="43dp"
    android:id="@+id/msgerror"
    android:textSize="6dp"
    android:layout_below="@id/logimage"
    android:textColor="#FF0000"
    android:layout_centerHorizontal="true"
    />
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:inputType="textPersonName"
    android:hint="First name"
    android:padding="5dp"
    android:textSize="17dp"
    android:textColorHint="@color/hinttxt"
    android:background="@color/bluehint"
    android:singleLine="true"
    android:id="@+id/txtfirstn"
    android:layout_below="@id/msgerror"
    android:layout_centerHorizontal="true"
    />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:hint="Last name"
    android:textSize="17dp"
    android:layout_marginTop="10dp"
    android:padding="5dp"
    android:singleLine="true"

    android:textColorHint="@color/hinttxt"
    android:background="@color/bluehint"
    android:id="@+id/txtlastn"
    android:layout_below="@id/txtfirstn"
    android:layout_centerHorizontal="true"
    />
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:hint="Email"
    android:layout_marginTop="10dp"
    android:textColorHint="@color/hinttxt"
    android:background="@color/bluehint"
    android:inputType="textEmailAddress"
    android:padding="5dp"
    android:textSize="17dp"
    android:singleLine="true"
    android:id="@+id/txtemail"
    android:layout_below="@id/txtlastn"

    />


<Spinner
    android:id="@+id/my_spinner"
    android:layout_width="match_parent"
    android:spinnerMode="dialog"
    android:prompt="@string/prompt"
    android:layout_below="@id/txtemail"
    android:popupElevation="@drawable/rounded_corner"
    android:layout_height="wrap_content" />


<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="phone"
    android:hint="Phone"
    android:padding="5dp"
    android:textSize="17dp"
    android:singleLine="true"

    android:textColorHint="@color/hinttxt"
    android:background="@color/bluehint"
    android:id="@+id/txtphone"
    android:layout_below="@id/my_spinner"
    android:layout_centerHorizontal="true" />
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:hint="Your password"
    android:layout_marginTop="10dp"
    android:inputType="textPassword"
    android:padding="5dp"
    android:singleLine="true"
    android:textSize="17dp"
    android:textColorHint="@color/hinttxt"
    android:background="@color/bluehint"
    android:id="@+id/txtpwd"
    android:layout_below="@id/txtphone"
    />


<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="17dp"
    android:layout_centerHorizontal="true"
    android:hint="Re type your password"
    android:inputType="textPassword"
    android:padding="5dp"
    android:singleLine="true"
    android:layout_marginTop="10dp"
    android:id="@+id/txtrepwd"
    android:textColorHint="@color/hinttxt"
    android:background="@color/bluehint"
    android:layout_below="@id/txtpwd"
    />



<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Register"
    android:textSize="13sp"
    android:textColor="#ffffff"
    android:background="@color/bluedrawer"
    android:id="@+id/register"
    android:layout_centerHorizontal="true"
    android:layout_below="@id/txtrepwd"
    android:layout_centerInParent="true"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:layout_marginTop="20dp"
    />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/register"
    android:visibility="gone"
    android:id="@+id/idH"
    />


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:visibility="gone"
    android:layout_below="@id/idH"
    android:id="@+id/title"
    />

</RelativeLayout>
</ScrollView>

您必须使用 dp/dip 而不是使用 px 和 sp。它不会根据 phone 默认样式和分辨率或版本 > 19.

变大。

这种做法将有助于您获得一致的意见。

您在 ButtonTextView 中使用 px 作为单位,您应该改用 dp。可能是问题所在。

在您的 EditText 中,您正在设置 android:layout_width="match_parent",因此它将与父 View 一样宽。如果你想要设置一个特定的宽度,将 android:layout_height="wrap_content" 更改为你想要的大小,例如

android:layout_height="128dp"