Android下Button实现图文混排效果

发布时间 - 2026-01-11 02:40:53    点击率:

Button实现图文混排效果,具体内容如下

一、简介

本文介绍两种图文混排方式

1、android:drawableTop="@drawable/star"实现文字上有图片

当然有上下左右等等

2、SpannableString的ImageSpan实现图文混排

二、代码实例

效果图:

一二三四是用的第一种方式

下面的用的第二种方式 

代码:

fry.Activity02

package fry;

import com.example.buttonDemo1.R;

import android.app.Activity;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ImageSpan;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnFocusChangeListener;
import android.view.View.OnTouchListener;
import android.widget.Button;

public class Activity02 extends Activity {
  private Button btn_big;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity02);
    btn_big=(Button) findViewById(R.id.btn_big);
    
    //SpannableString的ImageSpan添加左边图片
    SpannableString spannableString1=new SpannableString("left");
    ImageSpan imageSpan=new ImageSpan(this, BitmapFactory.decodeResource(getResources(), R.drawable.image_left));
    spannableString1.setSpan(imageSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    
    //SpannableString的ImageSpan添加右边图片
    SpannableString spannableString2=new SpannableString("right");
    ImageSpan imageSpan2=new ImageSpan(this, BitmapFactory.decodeResource(getResources(), R.drawable.image_right));
    spannableString2.setSpan(imageSpan2, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    
    btn_big.append(spannableString1);
    btn_big.append("我的按钮");
    btn_big.append(spannableString2);
  }
}

/buttonDemo1/res/layout/activity02.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:orientation="vertical" >
  
  <LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >
    
    <!--android:drawableTop="@drawable/star"实现文字上有图片 -->
    <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="一" 
      android:drawableTop="@drawable/star"
      />
    
    <!--android:drawablePadding="30dp实现文字和文字上的图片中间有30dp的空隙 -->
    <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="二" 
      android:drawableTop="@drawable/star"
      android:drawablePadding="30dp"
      />
    
    <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="三" 
      android:drawableRight="@drawable/star"
      />
    
    <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="四" 
      android:drawableLeft="@drawable/star"
      />
  </LinearLayout>
  
  <Button 
    android:id="@+id/btn_big"
    android:layout_width="180dp"
    android:layout_height="200dp"
    
    />
  
</LinearLayout>

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


# Android  # Button  # 图文混排  # Android中使用TextView实现图文混排的方法  # 详解Android SpannableString多行图文混排的应用实战  # 上有  # 两种  # 上下左右  # 第二种  # 第一种  # 具体内容  # 大家多多  # View  # MotionEvent  # OnClickListener  # Spannable  # Activity  # os  # Bundle  # BitmapFactory 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在建站之星绑定自定义域名?  活动邀请函制作网站有哪些,活动邀请函文案?  Laravel集合Collection怎么用_Laravel集合常用函数详解  大连网站制作公司哪家好一点,大连买房网站哪个好?  原生JS实现图片轮播切换效果  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  如何快速上传自定义模板至建站之星?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  如何用VPS主机快速搭建个人网站?  如何续费美橙建站之星域名及服务?  WEB开发之注册页面验证码倒计时代码的实现  googleplay官方入口在哪里_Google Play官方商店快速入口指南  如何快速生成可下载的建站源码工具?  Laravel模型事件有哪些_Laravel Model Event生命周期详解  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  JS去除重复并统计数量的实现方法  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  Laravel如何实现本地化和多语言支持?(i18n教程)  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  JavaScript如何操作视频_媒体API怎么控制播放  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何在 React 中条件性地遍历数组并渲染元素  Laravel如何与Pusher实现实时通信?(WebSocket示例)  JavaScript如何实现继承_有哪些常用方法  如何实现建站之星域名转发设置?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  Android GridView 滑动条设置一直显示状态(推荐)  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  如何在自有机房高效搭建专业网站?  如何基于云服务器快速搭建个人网站?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  深圳网站制作培训,深圳哪些招聘网站比较好?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  制作公司内部网站有哪些,内网如何建网站?  如何在阿里云购买域名并搭建网站?  如何在阿里云虚拟主机上快速搭建个人网站?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  在centOS 7安装mysql 5.7的详细教程  如何挑选最适合建站的高性能VPS主机?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】