美文网首页
Android 解决Buttom中只有图片时设置宽高Wrap_c

Android 解决Buttom中只有图片时设置宽高Wrap_c

作者: Marlon_IT | 来源:发表于2018-07-19 09:58 被阅读46次

    问题描述:

    在使用Button时,如果Button只是设置背景图片时(或者button文字很少,字体很小时),而图片较小时,经常会出现使用Wrap_content失效,导致按钮变形。

    原因探究:

    通过查看安卓源码我们发现 AppCompat 主题中 Button 的默认 style 是"Base.Widget.AppCompat.Button",具体属性参数如下:

    <style name="Base.Widget.AppCompat.Button" parent="android:Widget">
            <item name="android:background">@drawable/abc_btn_default_mtrl_shape</item>
            <item name="android:textAppearance">?android:attr/textAppearanceButton</item>
            <item name="android:minHeight">48dip</item>
            <item name="android:minWidth">88dip</item>
            <item name="android:focusable">true</item>
            <item name="android:clickable">true</item>
            <item name="android:gravity">center_vertical|center_horizontal</item>
        </style>
    

    通过以上属性参数,我们可以确定Button的默认android:minHeight=48dip,android:minWidth=88dip,这两个参数决定了Button的最小宽高为88dp*48dp,这是引起buttom中图片拉伸变形的主要原因。

    解决方案:

    方案1:

    如果button只需要设置背景图片,不需要text时,可以使用ImageButtom代替Buttom。

    方案2.

    可以在布局button时,修改android:minHeight和android:minWidthp的值为0dp,具体做法如下:

                <Button
                    android:id="@+id/btnPlay"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:minWidth="0dp"
                    android:minHeight="0dp"
                    android:background="@drawable/play_start"/>
    

    方案3

    自定义button的style,这样可以在修改全局的buttom的android:minHeight和android:minWidthp的属性,具体做法如下:
    在项目的values/styles.xml文件中添加如下style:

        <style name="MyButton_Style" parent="Base.Widget.AppCompat.Button">
            <item name="android:minHeight">0dip</item>
            <item name="android:minWidth">0dip</item>
        </style>
    

    然后在values/styles.xml文件的AppTheme style节点中添加如下代码:

    <item name="android:buttonStyle">@style/MyButton_Style</item>
    

    到此,大功告成。

    相关文章

      网友评论

          本文标题:Android 解决Buttom中只有图片时设置宽高Wrap_c

          本文链接:https://www.haomeiwen.com/subject/eylapftx.html