android theme 与控件的关系

来源:互联网 发布:mac根据路径查找文件 编辑:程序博客网 时间:2024/06/13 13:19

在做android 界面开发的时候,发现一个问题:

设置SeekBar的长度是match_parent,但是进度条的部分却比父控件少了一截。

感觉就是哪里被设置padding了,但是在java代码中和xml布局文件中都没有找到设置padding的地方。


经过努力,后面发现,原来是,Activity 设置了一个主题,主题当中,设置了seekBarStyle的属性:代码如下:

 <style name="Widget.Material.SeekBar">        <item name="indeterminateOnly">false</item>        <item name="progressDrawable">@drawable/scrubber_progress_horizontal_material</item>        <item name="indeterminateDrawable">@drawable/scrubber_progress_horizontal_material</item>        <item name="thumb">@drawable/scrubber_control_material_anim</item>        <item name="splitTrack">true</item>        <item name="focusable">true</item>        <item name="paddingStart">16dip</item>        <item name="paddingEnd">16dip</item>        <item name="mirrorForRtl">true</item>        <item name="background">?attr/selectableItemBackgroundBorderless</item>    </style>

这下明白了,原来padding是在主题中设置了。


总结经验:

1、Activity都有一个默认主题的,它定义了一套控件的风格。如果需要改变控件风格的话,可以重载控件的属性。

2、下次再遇到类似的问题,可以先查看一下主题中是如何定义这个控件属性的。

0 0