Android开发样式问题总结【持续更新】
目录
Android控件/框架开源库收集
配置国内仓库
1. Java中设置控件的大小需要把dp先转换为像素(转换如下)
2. Java中设置GridLayout布局的layout_columnWeight属性
3. 设置字体样式为粗体
4. 设置字体颜色为黑色,但显示的是灰色。【使用以下写法设置即可】
5. Java代码中设置TextView的drawable不生效问题
6. 图标使用图片格式模糊,可使用以下方式改善【前提是需要svg源文件】
7. 加了layout_weight="1"的权重,只有一个元素怎么让它只占一半?
8. 为什么GridLayout布局中加了layout_columnWeight="1"还是超出了屏幕大小?
9. 一个需求:假如有头像的情况下展示头像,没有头像的情况下展示用户的名字。
10. Toolbar内标题的字体加粗设置
11. 使用CardView后有四周出现多出的空白
12. LinearLayout布局内的组件设置layout_gravity="right"无效
13. 在Fragment中处理返回事件,官方例子
14. ListView布局的一些问题
15. 去除WebView按钮聚焦时出现的黄框
16. 获取显示在当前Activity的Fragment
17. NumberPicker设置item的颜色和大小以及分隔线的厚度和颜色
18. 修改TextView和EditText中的hint字体大小
19. 设置BottomSheetDialog向下滑动不关闭弹窗并保留点击背景时才关闭弹窗
Android控件/框架开源库收集
- 【开源排行榜】GitHub - getActivity/AndroidGithubBoss: Github Android 国内个人技术排行榜
- 【框架】Android 常用开发框架_汤米粥的博客-CSDN博客_安卓开发框架
- 【框架】Android 主流通用常用框架汇总(持续更新)-云社区-华为云
- 【控件】GitHub - wasabeef/awesome-android-ui: A curated list of awesome Android UI/UX libraries
- 【控件】很值得收藏的安卓开源控件库 - 终端研发部 - 博客园
- 【控件】GitHub上受欢迎的Android UI Library
配置国内仓库
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}
https://maven.aliyun.com/repository/public其实包括了central仓库和jcenter仓库
1. Java中设置控件的大小需要把dp先转换为像素(转换如下)
dp * this.getResources().getDisplayMetrics().density + 0.5
2. Java中设置GridLayout布局的layout_columnWeight属性
GridLayout.LayoutParams param = new GridLayout.LayoutParams();
param.columnSpec = GridLayout.spec(GridLayout.UNDEFINED, 1f);
param.width = 0;
view.setLayoutParams(param);
3. 设置字体样式为粗体
textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
4. 设置字体颜色为黑色,但显示的是灰色。【使用以下写法设置即可】
textView.setTextColor(getResources().getColor(R.color.black));
5. Java代码中设置TextView的drawable不生效问题
Drawable drawable = getResources().getDrawable(R.drawable.tttt);
// 添加setBounds即可
drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
textView.setCompoundDrawables(drawable,null,null,null);
6. 图标使用图片格式模糊,可使用以下方式改善【前提是需要svg源文件】
假如我需要的图标在阿里的iconfont上有,那么可以选择下载svg格式的,如下:
接着需要在Android Studio中自带的工具进行转换,转换操作如下:
转换结果如下:
接着只需要引用对应的文件名即可使用。。。
7. 加了layout_weight="1"的权重,只有一个元素怎么让它只占一半?
在LinearLayout中添加属性android:weightSum="2"即可,如下:
8. 为什么GridLayout布局中加了layout_columnWeight="1"还是超出了屏幕大小?
设置layout_columnWeight="1"的同时也要设置layout_width="0dp",这样即可解决,在线性布局中设置的layout_weight="1"也跟上面一样将宽度值设为0dp即可!
GridLayout布局中有个坑:假设我添加了一个columnCount为2的值,但是这个布局里只有一个控件的话即使设置了layout_columnWeight的值为1,它还是会占一整行!用线性布局的话不会出现这个问题。
9. 一个需求:假如有头像的情况下展示头像,没有头像的情况下展示用户的名字。
我的实现方式是通过TextView来实现,有图片则设置其背景图并将text置空,没图片则添加text,若是要求圆头像,那么可以套一层CardView!xml如下:
<androidx.cardview.widget.CardViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:cardCornerRadius="50dp"><!-- cardCornerRadius设置的是圆角 --><TextViewandroid:layout_width="50dp"android:layout_height="50dp"android:text="名称"android:gravity="center"android:textColor="@color/white"android:background="#1682C9" /></androidx.cardview.widget.CardView>
10. Toolbar内标题的字体加粗设置
在themes.xml里添加以下样式:
<style name="HeaderToolbarStyle"><!-- 字体大小 --><item name="android:textSize">18sp</item><!-- 加粗 --><item name="android:textStyle">bold</item><!-- 字体颜色 --><item name="android:textColor">@color/black</item><!--toolbar字体格式--><item name="android:typeface">sans</item>
</style>
引用即可,如下图:
11. 使用CardView后有四周出现多出的空白
将cardPreventCornerOverlap属性设为false即可解决
12. LinearLayout布局内的组件设置layout_gravity="right"无效
这是因为LinearLayout默认是水平方向的布局,当水平方向时只有top和bottom有效,垂直方向布局时left和right才有效,所以我们需要给LinearLayout的orientation属性设为vertical即可
13. 在Fragment中处理返回事件,官方例子
public class FormEntryFragment extends Fragment {@Overridepublic void onAttach( @NonNull Context context) {super.onAttach(context);OnBackPressedCallback callback = new OnBackPressedCallback(true // default to enabled) {@Overridepublic void handleOnBackPressed() {// TODO 触发后的逻辑}};requireActivity().getOnBackPressedDispatcher().addCallback(this, // LifecycleOwnercallback);}}
14. ListView布局的一些问题
当我在ListView控件下添加一个Button控件时,Button控件一直溢出屏幕,如下图:
要解决该问题需要为ListView控件添加android:layout_weight="1"的属性,以及把高度设为0dp即可解决,效果如下图:
注意:我的布局是在LinearLayout当中的!!!
15. 去除WebView按钮聚焦时出现的黄框
在页面中添加以下css样式即可解决
.xxx{outline: none;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);-webkit-focus-ring-color: rgba(0, 0, 0, 0);}.xxx:active{outline: none;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);-webkit-focus-ring-color: rgba(0, 0, 0, 0);}
16. 获取显示在当前Activity的Fragment
首先你需要找到当前Activity的布局文件,要知道你的Fragment是放在哪个FrameLayout下的,比如我的Fragment是放在这个FrameLayout下,如图(注意id):
接着只需要在你的Activity加上下面这段代码即可获取:
// 注意你的id是布局文件中FrameLayout标签的id
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.layout);
17. NumberPicker设置item的颜色和大小以及分隔线的厚度和颜色
在themes.xml中添加以下的主题样式:
<!-- 时间选择器分隔线样式主题 --><style name="NumberPickerTheme"><!--字体大小--><item name="android:textSize">14sp</item><!--字体颜色--><item name="android:textColorPrimary">@color/black_333</item><!--分隔线颜色--><item name="colorControlNormal">#2B000000</item></style>
接着在控件当中引用即可:
<!--selectionDividerHeight设置的是分隔线的厚度-->
<NumberPickerandroid:layout_width="match_parent"android:layout_height="match_parent"android:selectionDividerHeight="1px"android:theme="@style/NumberPickerTheme" />
18. 修改TextView和EditText中的hint字体大小
使用以下方法即可:
/*** 设置文本视图提示文本大小** @param textView TextView* @param hint 提示内容* @param hintTextSize 提示文字大小*/
public static void setTextViewHintTextSize(TextView textView, String hint, int hintTextSize) {SpannableString spannableString = new SpannableString(hint);AbsoluteSizeSpan absoluteSizeSpan = new AbsoluteSizeSpan(hintTextSize, true);spannableString.setSpan(absoluteSizeSpan, 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);textView.setHint(new SpannableString(spannableString));
}
19. 设置BottomSheetDialog向下滑动不关闭弹窗并保留点击背景时才关闭弹窗
bottomSheetDialog.getBehavior().setHideable(false);
Android开发样式问题总结【持续更新】相关推荐
- Windows11 Android开发相关记录(持续更新...)
Windows11 Android开发相关记录(持续更新-) 本章节主要记录安装好Windos系统后开发环境搭建及其心得. 以及开发常用软件和相关配置. 以下属于个人做法,仅供参考: 文章目录 Win ...
- {Android}-开发进阶大纲(持续更新~)
摘要 开篇之前,首先说一下,大神就别点进来了.小编只是尘世间一个迷途小开发,二流程序员. 这篇文章并不像其他面经一样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,用一个月时间面试+复习+ ...
- Android开发实用工具汇总-持续更新
OctoTree-Github代码工具树 主页 浏览器插件 octotree 使用 仅在Google Chrome中演示下添加方式,其余浏览器请查看octotree Chrome控件添加地址: htt ...
- netcore开源框架_.NET Core开发精选文章目录,持续更新,欢迎投稿!
收集的一些.NET Core开发的文章,持续更新,欢迎投稿! 0.文章目录 布莱恩特:@.NET程序员,请了解这8种.NET 内存泄露方式! 布莱恩特:ASP.NET Core 性能优化22条最佳实践 ...
- Go语言开发学习笔记(持续更新中)
Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...
- Telegram Android源码问题汇总 持续更新
libtgvoip目录为空 git clone下来的工程中带有submodule时,submodule的内容没有下载下来,执行如下命令 cd Telegram git submodule update ...
- Win7下Android开发环境的搭建(更新于2015/3)
Win7下Android开发环境的搭建(更新于2015/3) --JDK + Eclipse + Android SDK + ADT 的安装.配置 Android开发环境搭建并不复杂,就是资源不好下, ...
- iOS开发- ios学习资源(持续更新)
mark一些自己在学习过程中收集的资源.免得需要的时候没地方找. 持续更新.(最新更新时间: 2014.4.4) 1.苹果官方文档 构建iOS程序:下面的这篇文章介绍了 iOS 程序开发的过程: St ...
- Android自问自答系列——持续更新ING
Hello,All,我是来自58同城的一名Android开发工程师,在58集团从事APP的开发工作.在日常的工作和学习过程中我经常会碰到一些好玩的和有意思的Android小知识点,有些知识可能都从未注 ...
最新文章
- OSChina 周四乱弹 ——震惊!程序员的时间都用来干这个!
- python使用笔记:pyperclip模块安装和使用
- ggplot2设置坐标轴范围_Matplotlib入门-2-坐标轴axis/axes设置
- java主类结构设计,设计结构(1)
- c++ 12.一维数组冒泡排序
- elementui 按钮 表单_前后端分离,文件上传下载(springBoot+vue+elementUI)
- mysql设置作业_MySQL-作业1
- linux监控nginx占用,使用zabbix 2.4 监控nginx
- Python 上下文管理器与with语句
- SparkSQL源代码:GlobalTempView与LocalTempView
- 信息系统项目管理01——信息化和信息系统
- 代码重构方向原则指导
- C的|、||、、、异或、~、!运算
- Hibernate教程——我的笔记
- PowerBI使用Tabular Editor翻译报表模型
- Python.密码本生成
- 大数据技术之_13_Azkaban学习_Azkaban(阿兹卡班)介绍 + Azkaban 安装部署 + Azkaban 实战
- 调研报告与调查报告的区别及写作技巧
- 四级词汇4000快速记忆
- Scrapy项目 - 数据简析 - 实现斗鱼直播网站信息爬取的爬虫设计
热门文章