如何在imagebutton上加文字
1个回答
2016-06-08 · 知道合伙人软件行家
关注
展开全部
今天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);
}
}
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);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询