Android控件View的文字周围添加图标

在Android控件View的文字周围添加图标,供大家参考,具体内容如下

在控件TextView文字周围放置图片(基于TextView的Button也能实现),减少多布局组合嵌套。

优点:使用LinearLayoutImageViewTextView组合布局固然可行, 但是布局文件会冗长许多。

以TextView为例:

在XML布局文件中设置以下5个属性:

  • drawableTop: 指定文本上方的图形。
  • drawableBottom: 指定文本下方的图形。
  • drawableLeft: 指定文本左边的图形。
  • drawableRight: 指定文本右边的图形。
  • drawablePadding: 指定图形与文本的间距。

若在代码中实现, 则可调用如下方法。

  • etCompoundDrawables: 设置文本周围的图形。 可分别设置左边、 上边、 右边、 下边的图形。
  • setCompoundDrawablePadding: 设置图形与文本的间距。
  • setBounds: 设置图形对象的矩形边界大小,必须设置图片大小,否则不会显示图片。

运行效果图:

示例代码如下:

public class IconActivity extends AppCompatActivity implements View.OnClickListener {
 private Button btn_icon; // 声明一个按钮对象
 private Drawable drawable; // 声明一个图形对象

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_icon);
  // 从布局文件中获取名叫btn_icon的按钮控件
  btn_icon = findViewById(R.id.btn_icon);
  // 从资源文件ic_launcher.png中获取图形对象
  drawable = getResources().getDrawable(R.drawable.ic_smile);
  // 设置图形对象的矩形边界大小,注意必须设置图片大小,否则不会显示图片
  drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());

  // 通过四个按钮分别演示:左、上、右、下四个方向展示图标的效果
  findViewById(R.id.btn_left).setOnClickListener(this);
  findViewById(R.id.btn_top).setOnClickListener(this);
  findViewById(R.id.btn_right).setOnClickListener(this);
  findViewById(R.id.btn_bottom).setOnClickListener(this);
 }

 @Override
 public void onClick(View v) { // 一旦监听到点击动作,就触发监听器的onClick方法
  // 监听到点击动作,就触发监听器的onClick方法
  switch (v.getId()) {
   case R.id.btn_left:
    // 设置按钮控件btn_icon内部文字左边的图标
    btn_icon.setCompoundDrawables(drawable, null, null, null);
    break;
   case R.id.btn_top:
    // 设置按钮控件btn_icon内部文字上方的图标
    btn_icon.setCompoundDrawables(null, drawable, null, null);
    break;
   case R.id.btn_right:
    // 设置按钮控件btn_icon内部文字右边的图标
    btn_icon.setCompoundDrawables(null, null, drawable, null);
    break;
   case R.id.btn_bottom:
    // 设置按钮控件btn_icon内部文字下方的图标
    btn_icon.setCompoundDrawables(null, null, null, drawable);
    break;
   default:
 }
}

xml中设置的2行核心代码

//在控件左侧设置图标
android:drawableLeft="@drawable/ic_smile"
//设置图标与控件文件的间距
android:drawablePadding="10dp"

布局xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:padding="12dp"
 android:orientation="vertical">
 <Button
  android:id="@+id/btn_icon"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center"
  android:padding="10dp"
  android:drawableLeft="@drawable/ic_smile"
  android:drawablePadding="10dp"
  android:text="热烈欢迎"
  android:textSize="17sp" />
 <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="10dp"
  android:orientation="horizontal">
  <Button
   android:id="@+id/btn_left"
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="图标在左"
   android:textSize="15sp" />
  <Button
   android:id="@+id/btn_top"
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="图标在上"
   android:textSize="15sp" />
  <Button
   android:id="@+id/btn_right"
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="图标在右"
   android:textSize="15sp" />
  <Button
   android:id="@+id/btn_bottom"
   android:layout_width="0dp"
   android:layout_height="wrap_content"
   android:layout_weight="1"
   android:text="图标在下"
   android:textSize="15sp" />
 </LinearLayout>
</LinearLayout>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2021-03-30

android实现添加耳机状态图标的方法

本文实例讲述了android实现添加耳机状态图标的方法.分享给大家供大家参考.具体如下: 原生态的android系统是没有耳机插入或未插入的状态指示的,本文就是讲解如何添加耳机插入的状态指示.效果图如下 如图,当插入耳机后,在status bar上出现了一个耳机的图标. 这个耳机的图标和sim卡信号等图标在status bar的右边,因此这个实现肯定不是通过notification实现的,那么添加这个功能只能在framwork里面寻找了.具体的修改步骤如下: 1.在frameworks/base

android如何添加桌面图标和卸载程序后自动删除图标

1:创建图标如下 复制代码 代码如下: Intent intent = new Intent(); intent.setClass(this, SplashActivity.class); Intent addShortcut = new Intent(ACTION_ADD_SHORTCUT); Parcelable icon = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon); addShortcut.putExtr

Android输入框添加emoje表情图标的实现代码

前言 再次写聊天的时候才发现,代码积累是一件非常重要的事情,就如这篇博客的意图其实就是代码积累的目的,其实没什么难度,但是一件很琐碎的事情真的也需要时间去完成和调试,所以,获取你在写一个功能的时候会觉得并没有多难,但是如果可以最好把代码整理/积累下来. demo描述 demo的功能其实就是仿照微信的 聊天 emoje 选择,采用了 viewpager+gridView 的方案,不过有空我会补上 recyclerView 的方案,目前还是先把功能实现了再说.另外在 TextView 和 EditT

android实现状态栏添加图标的函数实例

本文实例讲述了android实现状态栏添加图标的函数.分享给大家供大家参考.具体如下: private void showNotification() { // 创建一个NotificationManager的引用 NotificationManager notificationManager = (NotificationManager) AutoFile.this.getSystemService(android.content.Context.NOTIFICATION_SERVICE);

Android 自定义状态栏实例代码

一.目标:Android5.0以上 二.步骤 1.在res-values-colors.xml下新建一个RGB颜色 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#3

Android 沉浸式状态栏与隐藏导航栏实例详解

1 前言 一般我们在Android的APP开发中,APP的界面如下: 可以看到,有状态栏.ActionBar(ToolBar).导航栏等,一般来说,APP实现沉浸式有三种需求:沉浸式状态栏,隐藏导航栏,APP全屏 沉浸式状态栏是指状态栏与ActionBar颜色相匹配, 隐藏导航栏不用多说,就是将导航栏隐藏,去掉下面的黑条. APP全屏是指将状态栏与导航栏都隐藏,例如很多游戏界面,都是APP全屏. 所以,在做这一步时,关键要问清楚产品狗的需求,免得白费功夫. 下面,分别来介绍这三种方式的实现. 2

Android中ActionBar和ToolBar添加返回箭头的实例代码

 1.ActionBar添加返回箭头 //onCreate方法中 ActionBar actionBar = this.getSupportActionBar(); actionBar.setTitle("搜索功能"); actionBar.setDisplayHomeAsUpEnabled(true); //activity类中的方法 @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.get

Android标题栏上添加多个Menu按钮的实例

Android标题栏上添加多个Menu按钮的实例 前言: 最近项目中碰到要在Android Menu旁边再添加一个按钮,而不是点击menu按钮然后在弹出一些选项. MainActivity代码: public class MainActivity extends Activity { private static final int MENU_CONFIRM = 17; @Override protected void onCreate(Bundle savedInstanceState) {

Android实现状态栏和虚拟按键背景颜色的变化实例代码详解

今天介绍一下,我在项目开发过程中,实现状态栏和虚拟按键背景颜色变化的方法,实现方式是,通过隐藏系统的状态栏和虚拟按键的背景,实现图片和背景显示到状态栏和虚拟按键下方.下面来看实现代码: 实现状态栏背景的设置 状态栏工具类 public class StatusBarUtil { /** * 设置沉浸式状态栏 * * @param activity 需要设置的activity */ public static void setTransparent(Activity activity) { //A

Android RecyclerView添加头部和底部实例详解

Android RecyclerView添加头部和底部实例详解 如果只是想添加头部,可是使用GitHub里面这个项目,它可以为LinearLayoutManager,GridLayoutManager ,StaggeredGridLayoutManager布局的RecyclerView添加header.使用起来也十分简单: 只需将RecyclerViewHeader布局放在RecyclerView的上层. <FrameLayout android:layout_width="match_p

Android动态修改应用图标与名称的方法实例

遇到的坑 这里我把做这个功能中遇到的一些问题写在前面,是为了大家能先了解有什么问题存在,遇到这些问题的时候就不慌了,这里我把应用图标和名称先统一使用icon代替进行说明. 1.动态替换icon,只能替换内置的icon,无法从服务器端获取来更新icon: 2.动态替换icon以后,应用内更新的时候必须要切换到原始icon),否则可能导致更新安装失败(AS上表现为adb运行会失败),或者升级后应用图标出现多个甚至应用图标都不显示的情况(这些问题都可以通过下面我推荐的开发规则解决掉,所以这是一个坑点,

Android自定义Notification添加点击事件

前言 在上一篇文章中<Notification自定义界面>中我们实现了自定义的界面,那么我们该怎么为自定义的界面添加点击事件呢?像酷狗在通知栏 有"上一首","下一首"等控制按钮,我们需要对按钮的点击事件进行响应,不过方法和之前的点击设置不一样,需要另外处理,下面我将进行简单的说明. 实现 同样,我们需要一个Service的子类MyService,然后在MyService的onCreate中设置,如下代码: public class MyService

Android百度地图添加Marker失真问题的解决方案

Marker失真问题 由于公司项目原因,用了很多次百度地图API,基础的地图定位.显示地图就不多说了,这里主要说一下百度地图添加Marker图标. 最开始接触百度地图添加Marker图标的时候,发现自己设置的图标是多大地图上就显示多大,感觉有点失真,看起来很不舒服,但通过网上搜索,并没有找到解决办法,就没怎么注意图标失真的问题,毕竟是一个小项目,不是面向大众的,最近开发的一个项目同样有这个需求,而且是面向大众开发的,我就想为什么摩拜单车的图标那么清晰,我的图标却失真. 就是这么清晰 通过Reso