Android 自定义Android带图片和文字的ImageButton
经过分析,上述按钮效果实际上就是一个布局,一个最简单不过的垂直线性布局,上部分是一个ImageView,下部分是一个TextView,这个布局可点击、可设置监听。
我们首先要编写自己的ImageButton类,然后在主布局文件中为我们自定义的Button编写布局,最后在Activity中调用我们自定义ImageButton即可。
首先,我们编写一个MyImageButton类,继承自LinearLayout
package com.billhoo.study; import android.content.Context;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView; //自定义ImageButton,模拟ImageButton,并在其下方显示文字
//提供Button的部分接口
public class MyImageButton extends LinearLayout { public MyImageButton(Context context, int imageResId, int textResId) {
super(context); mButtonImage = new ImageView(context);
mButtonText = new TextView(context); setImageResource(imageResId);
mButtonImage.setPadding(, , , ); setText(textResId);
setTextColor(0xFF000000);
mButtonText.setPadding(, , , ); //设置本布局的属性
setClickable(true); //可点击
setFocusable(true); //可聚焦
setBackgroundResource(android.R.drawable.btn_default); //布局才用普通按钮的背景
setOrientation(LinearLayout.VERTICAL); //垂直布局 //首先添加Image,然后才添加Text
//添加顺序将会影响布局效果
addView(mButtonImage);
addView(mButtonText);
} // ----------------public method-----------------------------
/*
* setImageResource方法
*/
public void setImageResource(int resId) {
mButtonImage.setImageResource(resId);
} /*
* setText方法
*/
public void setText(int resId) {
mButtonText.setText(resId);
} public void setText(CharSequence buttonText) {
mButtonText.setText(buttonText);
} /*
* setTextColor方法
*/
public void setTextColor(int color) {
mButtonText.setTextColor(color);
} // ----------------private attribute-----------------------------
private ImageView mButtonImage = null;
private TextView mButtonText = null;
}
然后在main布局中为我们自定义的Button写xml布局,注意,我们的“按钮”实际上是一个线性布局,因此xml中应该写LinearLayout而不是Button或者ImageButton
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent"> <!-- 这就是我们的“数据管理按钮” -->
<LinearLayout android:id="@+id/ll_bt_data_config"
android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
最后,在Activity中为我们自定义的按钮设置监听
package com.billhoo.study; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout; public class TestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); btDataConfig = new MyImageButton(this, R.drawable.option, R.string.text); //获取包裹本按钮的容器
llbtDataConfig = (LinearLayout) findViewById(R.id.ll_bt_data_config); //将我们自定义的Button添加进这个容器
llbtDataConfig.addView(btDataConfig); //设置按钮的监听
btDataConfig.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
btDataConfig.setText("按钮被点击过了");
}
});
} private LinearLayout llbtDataConfig = null; //main布局中包裹本按钮的容器
private MyImageButton btDataConfig = null;
}
效果:



Android 自定义Android带图片和文字的ImageButton的更多相关文章
- android 自定义组件-带图片的textView
1. 定义属性 <?xml version="1.0" encoding="utf-8"?> <resources> <decla ...
- 自定义带图片和文字的ImageTextButton
今天我们来讲一下有关自定义控件的问题,今天讲的这篇是从布局自定义开始的,难度不大,一看就明白,估计有的同学或者开发者看了说,这种方式多此一举,但是小编我不这么认为,多一种解决方式,就多一种举一反三的学 ...
- 基于bootstrap的轮播广告页,带图片和文字
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8& ...
- Android 自定义Gallery浏览图片
之前写的<Android ImageSwitcher和Gallery的使用>一文中提到我在教室一下午为实现那个效果找各种资料.期间在网上找了一个个人觉得比较不错的效果,现在贴图上来: 其实 ...
- 自定义带图片和文字的Button的排版--陈棚
自定义button,动态加载图片与文字 [footView addSubview:btnAllChoose]; [btnAllChoose setTitle:str forState:UIContro ...
- Android 自定义android控件EditText边框背景
在我们进行Android应用界面设计和时候,为了界面风格的统一,我们需要对一些控件进行自定义.比如我们的应用采用的蓝色风格,但是 android的EditText控制获得焦点后显示的却是黄色的边框背景 ...
- 【Wince-自定义控件】ImageButton 带图片、文字
1.看图 可以实现MouseDown改变背景颜色或背景图片. 遗憾是没有实现键盘触发按钮事件. 2.选择继承自Control基类 public class ImageButton : Control ...
- Android 系统自带图片裁剪功能(适配7.0、8.0、对了还有小米手机)
前段时间写了如何获取相册和拍照之后的照片并且进行显示和上传,这一次是如何进行圆形图像制作,经常看我写的笔记的人会知道,我很懒.那么我就懒的自定义了,目前需求就用原生的就好了,大神的轮子,我会在后面进行 ...
- Android自定义ImageView实现图片圆形 ,椭圆和矩形圆角显示
Android中的ImageView只能显示矩形的图片,为了用户体验更多,Android实现圆角矩形,圆形或者椭圆等图形,一般通过自定义ImageView来实现,首先获取到图片的Bitmap,然后通过 ...
随机推荐
- opencv学习笔记(05)——操作相邻区域
下面的例子以灰度图像为例: #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp& ...
- Hadoop管理员的十个最佳实践(转)
前言 接触Hadoop有两年的时间了,期间遇到很多的问题,既有经典的NameNode和JobTracker内存溢出故障,也有HDFS存储小文件问题,既有任务调度问题,也有MapReduce性能问题.遇 ...
- C# 将cookiecontainer写到本地
public static void WriteCookiesToDisk(string file, CookieContainer cookieJar) { using(Stream stream ...
- PropertyDrawer 自定义属性绘图
public class PlayerAttributeExample : MonoBehaviour { //无滑块的属性 ; //特性限定,有滑块 [Range(, )] ; } Range特性的 ...
- 回溯(su)算法之N皇后问题
这里回溯算法还要好好研究一下 试探一个位置是否有效,如果有效,试探下一个位置(DFS),如果无效则回退 1.定义一个解空间,存放一个解的空间 2.DFS(暂且认为是DFS) 这里N皇后用的是递归+回溯 ...
- Mysql几种索引类型的区别及适用情况
如大家所知道的,Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE. 那么,这几种索引有什么功能和性能上的不同呢? FULLTEXT 即为全文索引,目前只有MyI ...
- 1084: [SCOI2005]最大子矩阵 - BZOJ
Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第一行为n,m,k(1≤n≤100,1≤m≤2 ...
- MyEclipse默认标签TODO,XXX,FIXME和自定义标签的使用
MyEclipse默认标签TODO,XXX,FIXME和自定义标签的使用 MyEclipse中的一些特殊的注释技术包括:1. // TODO —— 表示尚未完成的待办事项.2. // XX ...
- PhyreEngine3.8 MSAA resolution
There is something wrong in PhyreEngine 3.8 to fullfill MSAA, actually, I think it is eqaa You have ...
- 解决java写入xml报错org.w3c.dom.DOMException:DOM002 Illeg
Exception is -- > org.w3c.dom.DOMException: DOM002 Illegal character 字符不被允许 org.w3c.dom.DOMExcept ...