今天Android项目中遇到一个ImageButton控件上面要显示文字,无奈自定义了一个ImageButton,继承自ImageButton。其实就是override这个控件的onDraw(Canvas canvas)方法;代码如下:

package sRoger.pack.Utility;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.util.AttributeSet;
import android.widget.ImageButton; /**
* 自定义ImageButton
* 可以在ImageButton上面设置文字
* @author SJR
*/
public class CustomImageButton extends ImageButton {
private String _text = "";
private int _color = ;
private float _textsize = 0f; public CustomImageButton(Context context, AttributeSet attrs) {
super(context, attrs);
} public void setText(String text){
this._text = text;
} public void setColor(int color){
this._color = color;
} public void setTextSize(float textsize){
this._textsize = textsize;
} @Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setTextAlign(Align.CENTER);
paint.setColor(_color);
paint.setTextSize(_textsize);
canvas.drawText(_text, canvas.getWidth()/, (canvas.getHeight()/)+, paint);
}
}

Activity对应的布局xml文件代码:

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<sRoger.pack.Utility.CustomImageButton
android:id="@+id/login_btnLogin"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/login_btn_bg"
android:background="#eeeeee"
android:scaleType="fitXY"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:layout_marginRight="5dp"
android:layout_weight=""/>
<sRoger.pack.Utility.CustomImageButton
android:id="@+id/login_btnRegister"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/login_btn_bg"
android:background="#eeeeee"
android:scaleType="fitXY"
android:layout_marginLeft="5dp"
android:layout_marginRight="15dp"
android:layout_marginTop="15dp"
android:layout_weight="" />
</LinearLayout>

这是我的程序里面使用这个自定义ImageButton的代码。

下面就是为这个自定义的ImageButton设置字体了(就是我使用这个自定义的ImageButton的Activity里面),代码如下:

package sRoger.pack.MyActivity

import sRoger.pack.R;
import sRoger.pack.Utility.CustomImageButton; import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.LinearLayout;
import android.widget.Toast; public class LoginActivity extends Activity {
private CustomImageButton login_btn_login;
private CustomImageButton login_btn_register;
//自定义ImageButton上面显示的字体的大小
private float BTN_TEXTSIZE = 32f;
//自定义ImageButton上面显示的字体的颜色
private int BTN_TEXTCOLOR = Color.WHITE; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置当前Activity没有标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置当前Activity为全屏模式
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.login_activity); login_btn_login = (CustomImageButton)findViewById(R.id.login_btnLogin);
login_btn_register = (CustomImageButton)findViewById(R.id.login_btnRegister);
// 设置自定义ImageButton上面要显示的文本内容
login_btn_login.setText("登录");
// 设置自定义ImageButton上面要显示的文本内容
login_btn_register.setText("注册");
login_btn_login.setColor(BTN_TEXTCOLOR);
login_btn_register.setColor(BTN_TEXTCOLOR);
login_btn_login.setTextSize(BTN_TEXTSIZE);
login_btn_register.setTextSize(BTN_TEXTSIZE);
}
}

带文字的ImageButton[自定义]的更多相关文章

  1. Android实现自定义带文字和图片的Button

    Android实现自定义带文字和图片的Button 在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就 ...

  2. 【Android】Android实现自定义带文字和图片的Button

    在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就是利用系统自带的Button来实现,这种方式代码量最 ...

  3. Android开发学习之路-带文字的图片分享

    有用过微信分享SDK的都应该知道,微信分享到朋友圈的时候是不能同时分享图片和文字的,只要有缩略图,那么文字就不会生效.那么问题就来了,如果我们想把APP内的某些内容连带图片一起分享到微信,是不是没办法 ...

  4. wing带你玩转自定义view系列(2) 简单模仿qq未读消息去除效果

    上一篇介绍了贝塞尔曲线的简单应用 仿360内存清理效果 这一篇带来一个  两条贝塞尔曲线的应用 : 仿qq未读消息去除效果. 转载请注明出处:http://blog.csdn.net/wingicho ...

  5. wing带你玩转自定义view系列(1) 仿360内存清理效果

    本篇是接自 手把手带你做自定义view系列 宗旨都是一样,带大家一起来研究自定义view的实现,与其不同的是本系列省去了简单的坐标之类的讲解,重点在实现思路,用简洁明了的文章,来与大家一同一步步学习. ...

  6. 用POP动画编写带富文本的自定义动画效果

    用POP动画编写带富文本的自定义动画效果 [源码] https://github.com/YouXianMing/UI-Component-Collection [效果] [特点] * 支持富文本 * ...

  7. [原创]java WEB学习笔记42:带标签体的自定义标签,带父标签的自定义标签,el中自定义函数,自定义标签的小结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. phpqrcode生成带logo的二维码图片及带文字的二维码图片

    <?php require_once "./phpqrcode/phpqrcode.php"; /** * 这样就可以生成二维码了,实际上在png这个方法里还有几个参数需要使 ...

  9. 带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变

    带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变 转 https://blog.csdn.net/qq_30993595/article/details/78915115   近期有 ...

随机推荐

  1. desc跟asc

  2. ACM——圆柱体的表面积

    lems 1092 圆柱体的表面积 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:2697            测试通过:414 ...

  3. java web -部署在linux

    概述: 初次将java web项目部署到linux上, 还是很顺利的, 基本上没有什么错误. 步骤: 1, 安装jdk(官网中说了很清晰了),在linux上安装安装jdk, 不想windows那样, ...

  4. 最近整理的一些行列转换sql(有自己的,有别人的),留作记录

    --case when 经典用法SELECT * FROM        (SELECT 1 NUM,              '奖项金额',              SUM(CASE WHEN ...

  5. HDU 2501 Tiling_easy version(简单递推)

    Tiling_easy version Problem Description 有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有 ...

  6. HDU 3442 Three Kingdoms(状态压缩 + BFS )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3442 题目大意:三国时期,刘备逃亡.给定一个最大为50*50的地图,刘备在地图中只能往4个方向走. 地 ...

  7. c++ 中的8种智能指针[转]

    一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete.程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 ...

  8. LAMP 环境 快速安装

    (一)安装Apache 1.下载安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 yum install zlib-devel -y wget http://m ...

  9. C++11中新特性之:initializer_list详解

    C++11提供的新类型,定义在<initializer_list>头文件中. template< class T > class initializer_list; 先说它的用 ...

  10. php计算最后一次,第一次字符串出现位置

    strpos($str, n) 首次,n在str第一次出现位置, strrpos($str, n) 最后一次,n在str最后一次出现位置 strripos区分大小写