带文字的ImageButton[自定义]

今天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 = 0;
    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()/2, (canvas.getHeight()/2)+12, 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="1"/>
       <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="1" />
   </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);
    }
}
时间: 2024-11-26 12:16:08

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

android控件---自定义带文本的ImageButton

由于SDK提供的ImageButton只能添加图片,不能添加文字:而Button控件添加的文字只能显示在图片内部:当我们需要添加文字在图片外部时就不能满足我们的需求了,顾只能自己写个自定义ImageButton.说是ImageButton,其实并不是继承于ImageButton,而是从LinearLayout继承,由于LinearLayout是线性排列,通过setOrientation(LinearLayout.VERTICAL)的方式达到View垂直排列的目的,所以很简单,只需要添加两个Vie

自定义实现带文字标题的瀑布流效果

在网上能找到的大部分资料中的瀑布流效果都是单纯的照片实现,现在我来实现一个带文字标题的.效果如下: 每个item都是由图片和文字标题两部分组成. 布局方式为ScrollView里面嵌套一个水平方向的LinearLayout,里面再嵌套两个竖直方向的LinearLayout,然后判断竖直方向的两个LinearLayout的高度,向比较低的那个Linearlayout里面添加item. 下面是代码 <ScrollView xmlns:android="http://schemas.androi

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

在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就是利用系统自带的Button来实现,这种方式代码量最小.在Button的属性中有一个是drawableLeft,这个属性可以把图片设置在文字的左边,但是这种方式必须让icon的背景色是透明的,如果icon的背景色不是透明的话,会导致点击按钮时icon部分的背景色不会发生变化. 主要代码: <Button android:id="@+id/bt3

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

在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就是利用系统自带的Button来实现,这种方式代码量最小.在Button的属性中有一个是drawableLeft,这个 属性可以把图片设置在文字的左边,但是这种方式必须让icon的背景色是透明的,如果icon的背景色不是透明的话,会导致点击按钮时icon部分的背景 色不会发生变化. 主要代码: <Button android:id="@+id/b

iOS开发类似于呱呱卡效果,手指划过的区域形成画笔。适用于取出部分图片(截图),如截取出图片中带文字的区域部分。

HKBrushShots Demo下载地址: 类似于呱呱卡效果,手指划过的路线可以刮出痕迹. ??功能: 用于取出部分图片(截图),如截取出图片中带文字的区域部分. ??效果: 截取出图片中的“你就是我的全世界”文字区域的图片: 截取出图片中那只呆萌的小犀牛??: 更多截图效果: ??使用: 1 - 首先将工程中的“HKScreenShot”文件夹拷贝至项目中. 2 - 在需要使用的类中引入头文件: #import "HKCropView.h" #import "HKLine

解读(五):分析KeyboardFragment, 带文字和表情的评论发表面板

解读(五):分析KeyboardFragment, 带文字和表情的评论发表面板 其实就是这个常见的功能 这个功能涉及到很多类, 我一个一个分析 KeyboardFragment类 /** * 底部带emotion面板的文字和表情的评论功能的Fragment **/ public class KeyboardFragment extends BaseTabNavFragment { @Bind(R.id.et_input) EditText mInput; //输入框 @Bind(R.id.emo

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

上一篇介绍了贝塞尔曲线的简单应用 仿360内存清理效果 这一篇带来一个  两条贝塞尔曲线的应用 : 仿qq未读消息去除效果. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50503630 老规矩,先上效果图: qq的未读消息去除很炫酷,其实就是用了两条贝塞尔曲线,我们按思路来,先来画两个圆,及两条贝塞尔曲线,辅助点为圆心y坐标的一半.我们把下面移动的圆,叫做mMoveCircle. 这样一画,就很简单明了了对不对.只要在拖动的时候

Button 文字阴影,自定义图片,代码绘制样式,添加音效的方法

1.Button自己在xml文件中绑定监听器 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent&qu

TP框架中生成带背景带文字的二维码

首先下载一个phpqrcode的包放到/vendor目录下 链接:https://pan.baidu.com/s/18jV9DypYB_PHDhD6C0iedQ 提取码:qxuo 如果只是单纯生成二维码那么下面代码即可: vendor('phpqrcode.phpqrcode');//引入 $url='你要生成的东西:文字.数字.链接等'; $errorCorrectionLevel = "Q"; // 容错级别:L.M.Q.H $matrixPointSize = "3.8