先来看下效果:


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通过Mainfest设置Theme实现布局全屏
  2. Android中图片实现按钮点击效果
  3. Android仿QQ圆形头像
  4. Android――ImageButton按下效果设计
  5. Android彩蛋效果,微信彩蛋效果
  6. Lottie-移动动画效果框架
  7. android使用gridview的书架效果
  8. Android(安卓)百分比布局
  9. activity页面切换效果

随机推荐

  1. php环境中的ini配置
  2. php 多进程 父进程的阻塞与非阻塞
  3. php 发送http post请求
  4. Apache 2.2.19 + PHP5.2.17配置问题,请高
  5. Pubsub与Node.js和Socket.io为个人用户
  6. 从函数返回2个值[duplicate]
  7. 如何使用用户名作为子域名创建子域?
  8. PHP生成圆心图片-常用作头像圆图等场景
  9. hust校赛d题 PHP is the best language i
  10. 存储用户所需语言的最佳方式