自定义ListPreference弹出Dialog背景
公司最近项目需求是用实体键来在应用内操作,这就需要对那些可点击的widget的背景进行自定义,使其响应focus状态随即变化。大部分的layout改动都是挺简单的。
但是遇到一个主要的问题就是自带的PreferenceFragment,里面的layout不是通过平时常用的Button ImageView那些来写的,而是在res/xml文件夹下的一个xml文件,里面的item都是类似ListPreference、CheckBoxPreference这些,而里面的属性不像平常的widget一样可定制,因此需要一些不一样的方法。
废话不多说,这篇文章讲的主要内容就是对点击ListPreference后弹出的Dialog内的可点击控件背景进行自定义。
首先,这是默认效果:
然后如果想改变这内部的layout,我翻阅过网上很多的文章,其中有一篇感觉靠谱:感觉靠谱的文章
里面提到想自定义这个Dialog里的layout,就是重写PreferenceFragmentCompat里的onDisplayPreferenceDialog方法,修改show的那个Dialog,因为我用的就是PreferenceFragmentCompat,所以如果用的是不同的父载体可能不同。
正当我准备这样去重写一个Dialog时,我感觉事情可能更简单,因此我就再看了一下这个源码,发现他弹出的其实就是一个AlertDialog,那岂不是在style里自定义AlertDialog的样式就行?
二话不说马上开干,就继承了其中一个Dialog的样式然后修改里面对应的几个值:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="alertDialogTheme">@style/CustomAlertDialogTheme</item>
</style><style name="CustomAlertDialogTheme" parent="Theme.AppCompat.Light.Dialog"><item name="android:windowBackground">@drawable/bg_round_rectangle</item><item name="android:listChoiceBackgroundIndicator">@drawable/background_focus_test</item><item name="buttonBarButtonStyle">@style/CustomButtonStyle</item>
</style><style name="CustomButtonStyle"><item name="android:background">@drawable/background_focus_test</item>
</style>
android:listChoiceBackgroundIndicator
是ListView的item背景
buttonBarButtonStyle
可以自定义最底下的确定、取消按钮的样式
但是修改buttonStyle
是不起效的喔,试过了,所以记得要改buttonBarButtonStyle
。
效果如下:
就是这么简单。
但其实在实现这个效果前还是走了不少弯路,因为是PreferenceActivity所以一开始以为是要修改preferenceTheme的样式,但是对弹出的Dialog一直不起作用,反正就是在反复地试错。但是网上没有相关的文章或者提出的需求,只能自己慢慢琢磨。
希望有类似需求的各位能少走些弯路。
自定义ListPreference弹出Dialog背景相关推荐
- 自定义底部弹出Dialog(老掉牙的需求还是记录一下吧)
(1)布局: phonto_dialog.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and ...
- Android中修改弹出dialog背景无色透明,弹出时有遮罩
先在styles.xml中写入下面样式 1 <style name="dialog" parent="@android:style/Theme.Dialog&quo ...
- Android自定义底部弹出窗-dialog(2种实现分析+源码)
Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...
- android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog
本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...
- java右键弹出菜单_javascript自定义右键弹出菜单实现方法
本文实例讲述了javascript自定义右键弹出菜单实现方法.分享给大家供大家参考.具体实现方法如下: 无标题页 var oPopup = window.createPopup(); function ...
- html自定义js程序,JS中微信小程序自定义底部弹出框
实现微信小程序底部弹出框效果,代码分为html,css和js两部分,具体代码详情大家参考下本文. html CSS .commodity_screen { width: 100%; height: 1 ...
- jquery mobile用代码弹出dialog
一.点击弹出dialog 见 http://www.w3school.com.cn/jquerymobile/jquerymobile_pages.asp 中"将页面作为dialog&quo ...
- 弹出框 背景固定 滑动
// 弹出框 背景滑动问题 style.cssText 弹出框父级absolute body fixed 弹出框absolute 也是一种解决方案 val 变量,当前弹出框状态huaDong (val ...
- js 弹出框 背景不滑动 方案
这是一个系列,记录我前端开发常用的代码,小常识,有些是参考网上代码,(讲的可能有点烂,求不要打脸,嘤嘤嘤~~)送给那些需要的人.可以相互交流,喜欢的加我吧. Wx: Lxp911221 js 弹出框 ...
最新文章
- 面试定心丸:AI知识点备忘录(包括ML、DL、Python、Pandas等)
- JVM 史上最最最完整深入解析(12000 字噢)
- cad打印样式ctb丢失_我的第一次打印:cad模型空间套图框打印图纸
- 分享下我的博客园CSS
- (0072)iOS开发之UITableViewCell高度自适应探索--cell预估高度
- [转载]读塔莎奶奶的美好生活
- ActiveMQ的几种集群配置
- 参赛方案-主机托管、中小企业虚拟化应用
- 系统制成docker镜像_docker 制作自己的镜像
- 华为 招聘 状态 查看_英特尔放弃5G芯片研发:三星受益;爱立信2019年Q1净利润约2.51亿美元;华为也将要与高通和解;天津首个5G电话成功打通...
- ORACLE与PostgreSql的区别
- 基于JAVA+SpringBoot+Mybatis+MYSQL的婚纱影楼摄影网站
- 七月算法机器学习2 数理统计与参数估计2
- j3455跑mysql_看烦了千篇一律的J3455?让黑群晖显示真实的CPU信息
- matlab list函数参数,Matlab 函数参数汇总
- 深度学习系列资料总结
- 零基础怎么学习平面设计,学习平面设计需要多久?
- 【2022 CCPC 华为云计算挑战赛】1005 带权子集和 (NTT 优化dp)
- 怎么让python播放音频_用Python播放音频
- Activiti7实战二:实现具有拒签功能的请假2层审批流程
热门文章
- ESXI install FREE NAS
- JavaWeb过滤器解决中文乱码问题
- 智能交通数据集Rope3D(仅限科研使用)
- 我在北京生活的尴尬——读韩寒《马上会跌,跌破一千》有感
- 【数据治理】浅谈数据治理
- CabloyJS一站式助力微信、企业微信、钉钉开发 - 微信篇
- python shutil_Python3 shutil(高级文件操作模块)
- 【建议改为:活 学 活 用】如何使用git工具一键隐藏/管理你的“学习资料”?
- 腾讯游戏海量业务场景下的个性化安全运营之道
- AMFPHP在64位机上无法正确转换负数