首页 > 代码库 > android控件---自定义带文本的ImageButton
android控件---自定义带文本的ImageButton
由于SDK提供的ImageButton只能添加图片,不能添加文字;而Button控件添加的文字只能显示在图片内部;当我们需要添加文字在图片外部时就不能满足我们的需求了,顾只能自己写个自定义ImageButton。说是ImageButton,其实并不是继承于ImageButton,而是从LinearLayout继承,由于LinearLayout是线性排列,通过setOrientation(LinearLayout.VERTICAL)的方式达到View垂直排列的目的,所以很简单,只需要添加两个View:一个ImageView和一个TextView即可。代码如下:
package com.example.adtest;import android.content.Context;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class ImageButtonEx extends LinearLayout { private ImageView _imageView = null; private TextView _textView = null; public ImageButtonEx(Context context){ super(context); } public ImageButtonEx(Context context, int imageResId, int textResId) { super(context); // TODO Auto-generated constructor stub _imageView = new ImageView(context); _textView = new TextView(context); _imageView.setImageResource(imageResId); _textView.setText(textResId); _imageView.setPadding(0, 0, 0, 0); _textView.setPadding(0, 0, 0, 0); setClickable(true); setFocusable(true); setBackgroundResource(android.R.drawable.btn_default); setOrientation(LinearLayout.VERTICAL); addView(_imageView); addView(_textView); } public void setBtnText(CharSequence text) { _textView.setText(text); }}
添加一个LinearLayout作为ImageButtonEx的容器。
<LinearLayout android:id="@+id/llImageBtnEx" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"/>
然后再Activity中添加调用代码:
package com.example.adtest;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ImageButtonEx imageBtnEx = new ImageButtonEx(this, R.drawable.icon, R.string.hello_world); imageBtnEx.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub imageBtnEx.setBtnText("已经点击过了"); }}); LinearLayout llimageBtnEx = (LinearLayout)findViewById(R.id.llImageBtnEx); llimageBtnEx.addView(imageBtnEx); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。