Android API 19中如何去除TimePicker的白色边距?
解决Android API 19中TimePicker白色边距问题
这个问题我之前帮同事排查过,API 19的原生TimePicker确实有这个小坑——它自带了默认的内边距和容器背景,就算你给它设置了白色背景,那些默认的边距还是会露出来。给你几个靠谱的解决办法:
方法一:直接清除默认内边距
先试试最简单的方式,给TimePicker添加android:padding="0dp",强制清除它的默认内边距:
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/blue"> <!-- 记得给RelativeLayout设置蓝色背景 --> <TimePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/timePicker" android:background="@color/white" android:padding="0dp" <!-- 新增这一行清除内边距 --> android:clickable="false" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"/> </RelativeLayout>
方法二:自定义样式覆盖默认属性
如果直接加padding没用,那大概率是原生样式控制了边距,这时候可以专门针对API 19写个自定义样式:
- 在
res/values-v19目录下创建styles.xml(没有这个目录就新建),添加以下样式:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomTimePickerStyle" parent="android:Widget.Material.TimePicker"> <item name="android:padding">0dp</item> <item name="android:background">@color/white</item> </style> </resources>
- 回到布局文件,给TimePicker应用这个样式:
<TimePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/timePicker" style="@style/CustomTimePickerStyle" <!-- 用样式替换单独的background属性 --> android:clickable="false" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"/>
方法三:改用兼容库控件(终极方案)
要是原生控件的样式实在搞不定,推荐改用AndroidX的兼容版TimePicker,它的样式更统一,默认没有这些奇怪的边距:
<androidx.appcompat.widget.TimePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/timePicker" android:background="@color/white" android:clickable="false" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"/>
记得确保你的项目已经引入了AndroidX依赖哦。
内容的提问来源于stack exchange,提问作者SynthWeaver
相关产品推荐
相关产品推荐

