Android Studio 如何在TextView中设置图标并按需调整图标大小
•任务
相信大家对这张图片都不陌生,没错,就是 QQ动态 向我们展示的界面。
如何实现呢?
•添加文字并放入图标
新建一个 Activity,取名为 QQ,Android Studio 自动为我们生成了两个文件: QQ.java 和 activity_q_q.xml。
从网上下载 QQ空间图标,图片及信息如下:
![]()
我将该图片保存在了 res/drawable 文件夹下,并命名为 qq.jpg。
在 activity_q_q.xml 中通过 TextView 控件将 “好友动态” 这四个字以及图标加入,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"> <TextView
android:id="@+id/tv_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/qq"
android:text="好友动态"
android:textColor="#000000"
android:textSize="25sp"
android:textStyle="bold" /> </LinearLayout>通过 drawableLeft 属性将图片放置在了文字的左侧,你以为这样就大功告成了吗?
没有实践就没有发言权,让我们来运行一下,看看结果如何。
•效果展示图
你会发现,图片过于大了,占据了整个屏幕还没有显示完。
那么,接下来,我们需要做的就是,调整图片大小,使其能够按照我们的预想展示出来。
•调整图标大小
在 QQ.java 文件中,我们通过 setBounds()方法 和 setCompoundDrawables()方法 来调整图标大小。
具体代码如下:
public class QQ extends AppCompatActivity { private TextView tv1;
Drawable icon; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_q_q); tv1 = findViewById(R.id.tv_1);
icon = getResources().getDrawable(R.drawable.qq);
icon.setBounds(0, 0, 80, 80);
tv1.setCompoundDrawables(icon, null, null, null);
}
}setBounds(left , top , right , bottom) 方法中共有四个参数:
- 前两个是组件左上角在容器中的坐标
- 后两个是组件的宽度和高度
这个是我在百度上找的,原文链接。
我自己也测试了一下,大致差不多,但是对前两个参数还存在疑问,在不改变后两个参数的情况下,该边前两个参数,图片大小发生变化,也不知道为啥,留着以后解决。
还有一种解释是 right-left = drawable 的宽,top - bottom = drawable 的高,原文链接。
setCompoundDrawables(left , top , right , bottom) 方法中同样有四个参数,API 原文为:
Sets the Drawables (if any) to appear to the left of, above, to the right of, and below the text. Use null if you do not want a Drawable there.
The Drawables must already have had setBounds(Rect) called. 意思大概就是:可以在上、下、左、右设置图标,如果不想在某个地方显示,则设置为null。但是Drawable必须已经setBounds(Rect)。
意思是你要添加的资源必须已经设置过初始位置、宽和高等信息。原文链接。
任务图中QQ图标在文字的左侧,所以,将 left 位置设置为 icon,其他位置设置为 null 即可。
•效果展示图
本节所讲的主要内容是如何调整 TextView 中图片的大小,所以,这张效果图就将就着看一下吧,哈哈哈。
Android Studio 如何在TextView中设置图标并按需调整图标大小的更多相关文章
- android中用Spannable在TextView中设置超链接、颜色、字体
昨晚研读 ApiDemo 源码至 com.example.android.apis.text.Link 类.首先,看一下其运行效果: 要给 TextView 加上效果,方式主要有几种: 第一种,自动 ...
- Android 一个TextView中设置多种不同大小的字体,设置超链接
以前项目中要是遇到这样的UI设计,都是傻不拉唧的分为三个TextView来实现,今天在微信中无意中看了一篇公众号文章,发现原来只要一个TextView就可以搞定啦,人生最悲哀的事情莫过于工作了这么久啦 ...
- Android Studio 常用快捷键及常用设置
Android Studio 常用快捷键及常用设置 一.常用快捷键 快捷键 描述 Ctrl + Alt + L 格式化代码 Ctrl + ( +/- ) 展开/折叠 代码块 Ctrl + Shift ...
- 如何在 apache 中设置缓存有效时间
今天学习了下如何在 apache 中设置缓存时间,记之以备忘. 在 http 报文头中,与缓存时间有关的两个字段是 Expires 以及 Cache-Control 中的 max-age,Expire ...
- 如何在Eclipse中设置默认的JSP文件头部编码
如何在Eclipse中设置默认的JSP文件头部编码 一般,我们为了以后在导入和导出程序的时候(特别是项目较大,文件多)一般都默认文件编码格式为UTF-8 如果你通常都是通过Eclipse来编写程序,那 ...
- 如何在IIS中设置HTTPS服务
文章:https://support.microsoft.com/en-us/help/324069/how-to-set-up-an-https-service-in-iis 在这个任务中 摘要 为 ...
- ZT Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性
Android布局]在程序中设置android:gravity 和 android:layout_Gravity属性 分类: [Android基础] 2011-04-19 16:06 54739人阅读 ...
- 使用Android Studio调试UiAutomator过程中遇到的问题
声明: 这里纪录了个人学习和使用Android Studio调试UiAutomator过程中遇到遇到的问题,不定时进行更新,欢迎一起交流学习 1.Excution faild for task ‘:a ...
- Android studio在使用过程中的问题总汇!
使用android studio也有一段时间了,汇总了一下这段时间内遇到一些常见问题,希望能够帮助到大家! 一.字体大小问题 在android studio的使用过程中没有发现类似于Eclipse中的 ...
随机推荐
- 2020 front-end interview
2020 front-end interview https://juejin.im/post/5e083e17f265da33997a4561 xgqfrms 2012-2020 www.cnblo ...
- taro & Block
taro & Block https://nervjs.github.io/taro/docs/children.html#注意事项-1 import Taro, { Component, E ...
- React Portal - 弹出层的优秀解决方案
对于需要使用弹出层的需求 ,Portal可以说是提供了一种完美的解决方案.相比于React Native中的实现更多的使用Modal或者绝对定位,Portal实在是简易友好得多. 场景 对话框,确认提 ...
- git设置、查看、取消代理
设置代理: git config --global http.proxy 'socks5://127.0.0.1:1080' git config --global https.proxy 'sock ...
- NDK android Error:Expected caller to ensure valid ABI: MIPS
android studio 安装NDK之后,报错 Error:Expected caller to ensure valid ABI: MIPS 环境: android studio 2.3 gra ...
- 三万长文50+趣图带你领悟web编程的内功心法:一文带你深入解读HTTP的发展史
看到题目,大家是不是认为根据上一篇(两万字长文50+张趣图带你领悟网络编程的内功心法)一样,其实不然,我们上一边介绍的是网络编程的基本功,有了这些基本功之后,我们就可以在此之上构建更加接近实际应用的w ...
- MongoDB语句命令
更新列名 db.xx.update({}, {$rename : {"StoreId" : "MetaId"}}, false, true) 查询长度 db.g ...
- 【死磕JVM】JVM快速入门之前戏篇
简介 Java是一门可以跨平台的语言,但是Java本身是不可以实现跨平台的,需要JVM实现跨平台.javac编译好后的class文件,在Windows.Linux.Mac等系统上,只要该系统安装对应的 ...
- 前端问题录——在导入模块时使用'@'时提示"Modile is not installed"
前情提要 为了尽可能解决引用其他模块时路径过长的问题,通常会在 vue.config.js 文件中为 src 目录配置一个别名 '@' configureWebpack: { resolve: { a ...
- react入个门
起步 react 特点 不使用模板 不是一个mvc框架 响应式 轻量级的js库 原理 虚拟dom 将dom抽象成js对象 diff算法 搭建开发环境 react.js 核心文件 react-dom.j ...



