带文字的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);
    }
}
原文地址:https://www.cnblogs.com/zhujiabin/p/4413853.html