先来看下效果:


main.xml
<?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" android:background="#ffffff"><linearlayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/tab" android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="wrap_content"android:background="#ffffff"></linearlayout></linearlayout>


tabswitcher.java
package com.iaiai.activity;import android.content.context;import android.graphics.color;import android.view.gravity;import android.view.view;import android.widget.linearlayout;import android.widget.textview;/** *  * <p> * title: tabswitcher.java * </p> * <p> * e-mail: 176291935@qq.com * </p> * <p> * qq: 176291935 * </p> * <p> * http: iaiai.iteye.com * </p> * <p> * create time: 2011-8-11 * </p> *  * @author 丸子 * @version 0.0.1 */public class tabswitcher extends linearlayout {private context context;private string[] texts;private int selectedposition = 0;private int oldposition = selectedposition;private int[] background = { r.drawable.tabswitcher_short,color.transparent };private textview[] tvs;public tabswitcher(context context, string[] texts) {super(context);this.texts = texts;this.context = context;setorientation(horizontal);linearlayout.layoutparams params = new linearlayout.layoutparams(linearlayout.layoutparams.fill_parent,linearlayout.layoutparams.wrap_content);setlayoutparams(params);setbackgroundresource(r.drawable.tabswitcher_long);}@overrideprotected void onfinishinflate() {// todo auto-generated method stubsuper.onfinishinflate();tvs = new textview[texts.length];linearlayout.layoutparams params = new linearlayout.layoutparams(linearlayout.layoutparams.fill_parent,linearlayout.layoutparams.wrap_content);params.weight = 1;params.gravity = gravity.center_vertical;for (int i = 0; i < texts.length; i++) {textview child = new textview(context);child.settag(i);child.settextsize(16);child.settextcolor(color.black);child.setgravity(gravity.center);tvs[i] = child;child.setonclicklistener(listener);this.addview(child, params);}}onclicklistener listener = new onclicklistener() {@overridepublic void onclick(view v) {selectedposition = (integer) v.gettag();if (selectedposition != oldposition) {tvs[oldposition].setbackgroundcolor(background[1]);oldposition = selectedposition;((textview) v).setbackgroundresource(background[0]);if (onitemclicklisener != null) {onitemclicklisener.onitemclicklisener(v, selectedposition);}}}};@overrideprotected void onsizechanged(int w, int h, int oldw, int oldh) {super.onsizechanged(w, h, oldw, oldh);oldposition = selectedposition;for (int i = 0; i < texts.length; i++) {tvs[i].settext(texts[i]);if (selectedposition == i) {tvs[i].setbackgroundresource(background[0]);} else {tvs[i].setbackgroundcolor(background[1]);}}}private onitemclicklisener onitemclicklisener;public void setonitemclicklisener(onitemclicklisener onitemclicklisener) {this.onitemclicklisener = onitemclicklisener;}public interface onitemclicklisener {void onitemclicklisener(view view, int position);}public void settexts(string[] texts) {this.texts = texts;}public void setselectedposition(int selectedposition) {this.selectedposition = selectedposition;}}


iaiaiactivity.java
package com.iaiai.activity;import android.app.activity;import android.os.bundle;import android.view.view;import android.widget.linearlayout;import android.widget.toast;import com.iaiai.activity.tabswitcher.onitemclicklisener;/** *  * <p> * title: iaiaiactivity.java * </p> * <p> * e-mail: 176291935@qq.com * </p> * <p> * qq: 176291935 * </p> * <p> * http: iaiai.iteye.com * </p> * <p> * create time: 2011-8-11 * </p> *  * @author 丸子 * @version 0.0.1 */public class iaiaiactivity extends activity {@overridepublic void oncreate(bundle savedinstancestate) {super.oncreate(savedinstancestate);setcontentview(r.layout.main);tabswitcher tabswitcher = new tabswitcher(this, new string[] { "1","2", "3", "4" });tabswitcher.setselectedposition(1);tabswitcher.setonitemclicklisener(onitemclicklisener);tabswitcher.onfinishinflate();linearlayout linearlayout = (linearlayout) findviewbyid(r.id.tab);linearlayout.addview(tabswitcher, new linearlayout.layoutparams(linearlayout.layoutparams.fill_parent,linearlayout.layoutparams.wrap_content));}onitemclicklisener onitemclicklisener = new onitemclicklisener() {@overridepublic void onitemclicklisener(view view, int position) {// todo auto-generated method stub//switch (position) {case 0:case 1:case 2:toast.maketext(iaiaiactivity.this,"position clicked:" + position, toast.length_short).show();break;default:break;}}};}


tabswitcher_long.9.png:

tabswitcher_short.9.png:

更多相关文章

  1. Android实现计数器功能
  2. android————EditText
  3. Android(安卓)点击输入框弹出日历 《H》
  4. android 分类联动效果 模仿每日优鲜
  5. 定义界面布局TextView&Button
  6. ListView中一些效果的实现
  7. Android(安卓)Studio用线性布局和相对布局做一个简单的登陆界面
  8. IOS 实现android Toast效果
  9. android开发笔记之viewpager 基本使用方法

随机推荐

  1. Android(安卓)ANR问题原因分析
  2. 只需轻松点两下,人人都会设计的 Logo 图!
  3. Android包管理机制
  4. 搭建云服务器
  5. 【Android(安卓)ApkTool 反编译获取源码
  6. 在Google Pixel上找不到的11个有用的Sams
  7. 很通俗易懂的概念Activity,Window,DecorV
  8. Android(安卓)ProgressBar 详解 改变 Pro
  9. android camera 框架总述
  10. Android多线程的实现方式及使用场景