资讯专栏INFORMATION COLUMN

记录修改安卓5.0系统浏览器UI遇到的部分问题

weakish / 465人阅读

摘要:碎碎念今年七月份本科毕业后入职一家会议平板公司,经过一个一个多月的咸鱼培训轮岗生活,接手了几个小任务,本次记录一下其中一个任务修改安卓系统浏览器。而且由于是安卓系统源码,还无法像平时用一样随意跳转,只能用缓慢查找。

碎碎念

今年七月份本科毕业后入职一家会议平板公司,经过一个一个多月的咸鱼培训轮岗生活,接手了几个小任务,本次记录一下其中一个任务:修改安卓5.0系统浏览器UI。刚接到任务的时候,本以为是很简单的一个任务,从我以往浅薄的开发经验来看,仅仅是修改UI布局那自然是轻松愉快的事情,但是现实很骨感,经历重重磨难直到今天才最终完成任务。在这里记录一下其中遇到的问题,这些问题有部分在百度谷歌各种博客或者Stack Overflow上都很难找到解决方案,有的部分就根本没答案,或许是由于大牛们觉得太简单而不屑于讨论。话不多说,开始记录。

1 ActionBar样式修改

在style.xml中找到当前activity应用的theme,然后在theme里添加:

@style/ActionBarStyle

然后自己定义ActionBarStyle,通常在里面设置ActionBar背景。若要设置标题栏高度,可以直接在theme中添加:

30dp
2 PopupMenu样式修改

(1)浏览器的更多按钮是弹出一个菜单列表,默认是用PopupMenu实现。要修改PopupMenu样式,在theme中添加:

@style/popmenuStyle

然后自定义popmenuStyle,通常在里面设置背景,需要注意的是,无法在popmenuStyle中修改PopupMenu大小(也许是我没找到),所以如果想更自由地自定义弹出菜单,需要选用PopupWindow。

(2)修改PopupMenu上的文字颜色和大小,可以在theme中添加:

@style/popmenuText

然后自定义popmenuText,设置textSize和textColor.

(3)自定义popmenu的列表下划线,需要在theme中添加:

@style/popmenuDivider

然后自定义popmenuDivider:

3 首选项的修改

几乎所有应用都离不开首选项模块的编写,安卓给我们提供了preference让我们能更方便快捷地完成需求。

(1)为了对preference默认的listView进行修改,例如设置下划线,需要在代码中获取它。获取preference的listView可以在继承preferenceFragment的子类中重写onCreateView:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view=super.onCreateView(inflater,container,savedInstanceState);
        ListView listView=(ListView)view.findViewById(android.R.id.list);
        listView.setDivider(null);
        return view;
    }

(2)想要设置preference弹出窗口的大小,可以继承需要修改的preference,然后在子类中重写showDialog。例如需要修改listPreference的弹出窗口大小,则新建一个子类继承listPreference,然后在子类中重写showDialog:

@Override

    protected void showDialog(Bundle state) {
        super.showDialog(state);
        Window window =getDialog().getWindow();
        window.setBackgroundDrawableResource(R.drawable.menu_list_bg);
        WindowManager.LayoutParams layoutParams = window.getAttributes();
        layoutParams.width = (int)(getDialog().getContext().getResources().getDimension(R.dimen.dialog_width));
        window.setAttributes(layoutParams);
    }

其中getDialog()是listPreference里提供dialog对象的函数。

(3)部分需求下不应该在preference的listView里每一项中都添加下划线,因此不应该在代码中直接获取listView并且setDivider,我的方式是在xml的PreferenceScreen里再添加PreferenceScreen,并且在这个PreferenceScreen里设置layout作为下划线,和在普通布局中用view做下划线同理。

结束语

以上记录的都是搜索资料较少或者没有的内容,也许大牛们都没有这样的需求,或者觉得太简单,所以这方面的资料很少。但是这让我经历了很多困难,翻遍framework里的资源和代码,才勉强完成任务。而且由于是安卓系统源码,还无法像平时用android studio一样随意跳转,只能用source insight缓慢查找。后来研究了一下如何用android studio查看和跳转安卓源代码,但是依然有很多限制。所以在这里记录遇到的困难和解决方法,下次遇到此类问题可以提高效率,也希望能帮助到和我一样是初学者的萌新们。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/2785.html

相关文章

  • 安卓开发日记(1) - 安装 Android 开发环境和 first app

    摘要:以为例官方文档安卓虚拟机用于加速安卓虚拟机模拟器,是设备的被模拟的设备和向下兼容的最低版本开发使用的版本可以在文件中查看或者修改和横屏竖屏 安装 Android 开发环境 安装 Android Studio 并升级到最新版本(本文使用 1.0.2 版本) 如果没有安装JDK, 安装 64-bit JDK MAC 下需要手动装一下HAXAM (安卓虚拟机加速器),安装文件在sdk/e...

    DevTTL 评论0 收藏0
  • 动画 - 收藏集 - 掘金

    摘要:本文分析主要把文件转为动画属性动画入门实践掘金前言说道动画肯定要先介绍一下,逐帧动画和补间动画。安卓动画详解一官方文档掘金概览安卓为元素和自己绘制图形提供了一系列的,这篇文章介绍了这些的主要用法。 那些年收藏的 Android 开源库集合 (UI 效果) - Android - 掘金文章内容定期更新该专题其他文章:那些年收藏的Android开源库集合(控件)那些年收藏的Android开...

    roadtogeek 评论0 收藏0
  • 在格式化场景下,React input 光标处理办法

    摘要:具体表现是什么样的呢图安卓下不期望的输入行为可以看到,在安卓手机下每次格式化发生的时候,本来应该一直在最后的光标会错格一位,导致连续输入出现问题。 今天要来说的是有关于有数值格式化的场景中,React input 光标的一些异常的表现和对应的处理办法。故事要从一个 issue 说起,有用户反映在使用 NumberField 组件输入时安卓下会出现光标位置异常,导致连续输入会达不到期望的...

    cheng10 评论0 收藏0
  • 使用WebUploader解决安卓微信览器上传图片中遇到bug

    摘要:具体的环境我也不太了解,但是经过实际多台安卓机型的测试,我采取的方案可以基本确保在安卓机中微信浏览器的成功上传。 摘自个人博客:走啊走的记录,欢迎点击查看,效果更佳! 微信浏览器上传图片bug的原因 微信在新版本中采用的是自己的X5内核浏览器,而在较老的版本中还有可能是安卓的原生浏览器。具体的环境我也不太了解,但是经过实际多台安卓机型的测试,我采取的方案可以基本确保在安卓机中微信浏览器...

    ybak 评论0 收藏0
  • 自定义控件及效果

    摘要:实现炫酷的登录效果美观,动画效果丰富风格底部选择器支持时间,日期,自定义带来一组风格底部选择器控件,虽然我们不提倡安卓使用风格的控件,但是难免有些产品和美工一味追求风格。 Android 动画效果定值范围选择控件 实现固定值的范围选择, 并添加动态效果, 使用方便 项目需求讨论 - Android 自定义 Dialog 实现步骤及封装 根据实际项目需求出发。因为项目中的对话框要配合整个...

    刘德刚 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<