目录

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开发样式问题总结【持续更新】相关推荐

  1. Windows11 Android开发相关记录(持续更新...)

    Windows11 Android开发相关记录(持续更新-) 本章节主要记录安装好Windos系统后开发环境搭建及其心得. 以及开发常用软件和相关配置. 以下属于个人做法,仅供参考: 文章目录 Win ...

  2. {Android}-开发进阶大纲(持续更新~)

    摘要 开篇之前,首先说一下,大神就别点进来了.小编只是尘世间一个迷途小开发,二流程序员. 这篇文章并不像其他面经一样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,用一个月时间面试+复习+ ...

  3. Android开发实用工具汇总-持续更新

    OctoTree-Github代码工具树 主页 浏览器插件 octotree 使用 仅在Google Chrome中演示下添加方式,其余浏览器请查看octotree Chrome控件添加地址: htt ...

  4. netcore开源框架_.NET Core开发精选文章目录,持续更新,欢迎投稿!

    收集的一些.NET Core开发的文章,持续更新,欢迎投稿! 0.文章目录 布莱恩特:@.NET程序员,请了解这8种.NET 内存泄露方式! 布莱恩特:ASP.NET Core 性能优化22条最佳实践 ...

  5. Go语言开发学习笔记(持续更新中)

    Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...

  6. Telegram Android源码问题汇总 持续更新

    libtgvoip目录为空 git clone下来的工程中带有submodule时,submodule的内容没有下载下来,执行如下命令 cd Telegram git submodule update ...

  7. Win7下Android开发环境的搭建(更新于2015/3)

    Win7下Android开发环境的搭建(更新于2015/3) --JDK + Eclipse + Android SDK + ADT 的安装.配置 Android开发环境搭建并不复杂,就是资源不好下, ...

  8. iOS开发- ios学习资源(持续更新)

    mark一些自己在学习过程中收集的资源.免得需要的时候没地方找. 持续更新.(最新更新时间: 2014.4.4) 1.苹果官方文档 构建iOS程序:下面的这篇文章介绍了 iOS 程序开发的过程: St ...

  9. Android自问自答系列——持续更新ING

    Hello,All,我是来自58同城的一名Android开发工程师,在58集团从事APP的开发工作.在日常的工作和学习过程中我经常会碰到一些好玩的和有意思的Android小知识点,有些知识可能都从未注 ...

最新文章

  1. OSChina 周四乱弹 ——震惊!程序员的时间都用来干这个!
  2. python使用笔记:pyperclip模块安装和使用
  3. ggplot2设置坐标轴范围_Matplotlib入门-2-坐标轴axis/axes设置
  4. java主类结构设计,设计结构(1)
  5. c++ 12.一维数组冒泡排序
  6. elementui 按钮 表单_前后端分离,文件上传下载(springBoot+vue+elementUI)
  7. mysql设置作业_MySQL-作业1
  8. linux监控nginx占用,使用zabbix 2.4 监控nginx
  9. Python 上下文管理器与with语句
  10. SparkSQL源代码:GlobalTempView与LocalTempView
  11. 信息系统项目管理01——信息化和信息系统
  12. 代码重构方向原则指导
  13. C的|、||、、、异或、~、!运算
  14. Hibernate教程——我的笔记
  15. PowerBI使用Tabular Editor翻译报表模型
  16. Python.密码本生成
  17. 大数据技术之_13_Azkaban学习_Azkaban(阿兹卡班)介绍 + Azkaban 安装部署 + Azkaban 实战
  18. 调研报告与调查报告的区别及写作技巧
  19. 四级词汇4000快速记忆
  20. Scrapy项目 - 数据简析 - 实现斗鱼直播网站信息爬取的爬虫设计

热门文章

  1. CSR867x — Headset项目评估总结
  2. 07-HTML5举例:简单的视频播放器
  3. 提升工作效率的软件及网站(不断更新中)
  4. 一款Java神仙接私活项目,吊到不行!
  5. HTTP和QUIC协议以及HTTPS——学习笔记
  6. 【Web技术】1374- 纯 JS 实现灵活的前端主题切换功能
  7. ChatGPT 可以联网了!浏览器插件下载
  8. SpringBoot、VUE基于国产环境适配开发(国产系统、国产数据库、国产中间件)
  9. 企业申请E-mark认证要检测些什么?
  10. 解决:syntax error at line xxx: `<<‘ unmatched