AppCompatButton的高度在设备上有所不同?

时间:2017-02-22 09:29:57

标签: android android-layout android-studio android-fragments

我正在使用AppCompatButton并遇到问题。某些测试设备上的按钮高度不同。

例如:

on SamSung Galaxy Note 4: enter image description here

在Nexus 6上:

enter image description here 我将我的按钮定义如下:

<android.support.v7.widget.AppCompatButton
        android:id="@+id/btn_add_to_cart"
        android:layout_width="0dp"
        android:layout_height="55dp"
        android:layout_weight="5"
        android:text="Add to cart"
        android:textAllCaps="false"/>

我不知道为什么设备之间的按钮不同。请帮我解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在尝试对齐按钮阴影时(由高程完成)我遇到了类似的问题。某些Samsung设备上“材质”按钮的默认样式不设置高程或stateListAnimator。 尝试为你的按钮设置android:stateListAnimator,如下所示:

<selector xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:state_enabled="true">
    <set>
        <objectAnimator android:propertyName="translationZ"
                        android:duration="100"
                        android:valueTo="1dp"
                        android:valueType="floatType"/>
        <objectAnimator android:propertyName="elevation"
                        android:duration="0"
                        android:valueTo="2dp"
                        android:valueType="floatType"/>
    </set>
</item>
<!-- base state -->
<item android:state_enabled="true">
    <set>
        <objectAnimator android:propertyName="translationZ"
                        android:duration="100"
                        android:valueTo="0"
                        android:startDelay="100"
                        android:valueType="floatType"
                        tools:targetApi="kitkat" />
        <objectAnimator android:propertyName="elevation"
                        android:duration="0"
                        android:valueTo="2dp"
                        android:valueType="floatType" />
    </set>
</item>
<item>
    <set>
        <objectAnimator android:propertyName="translationZ"
                        android:duration="0"
                        android:valueTo="0"
                        android:valueType="floatType"/>
        <objectAnimator android:propertyName="elevation"
                        android:duration="0"
                        android:valueTo="0"
                        android:valueType="floatType"/>
    </set>
</item>