今天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