热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidTabSwitcher自定义控件

main.xml  Java代码                           TabSwitcher.java  Java代码   package com.iai


main.xml 
Java代码  
  
    android:orientation="vertical" android:layout_width="fill_parent"  
    android:layout_height="fill_parent" android:background="#ffffff">   
             android:id="@+id/tab" android:orientation="vertical"  
        android:layout_width="fill_parent" android:layout_height="wrap_content"  
        android:background="#ffffff">   
    
  
 



android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="#ffffff">
android:id="@+id/tab" android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:background="#ffffff">






TabSwitcher.java 
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;   
  
/**  
 *   
 *

 
 * Title: TabSwitcher.java  
 *

 
 *

 
 * E-Mail: 176291935@qq.com  
 *

 
 *

 
 * QQ: 176291935  
 *

 
 *

 
 * Http: iaiai.iteye.com  
 *

 
 *

 
 * Create time: 2011-8-11  
 *

 
 *   
 * @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);   
    }   
  
    @Override  
    protected void onFinishInflate() {   
        // TODO Auto-generated method stub   
        super.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             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() {   
  
        @Override  
        public 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);   
                }   
            }   
        }   
  
    };   
  
    @Override  
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {   
        super.onSizeChanged(w, h, oldw, oldh);   
        oldPosition = selectedPosition;   
        for (int i = 0; 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;   
    }   
  
}  


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;


/**
 * 
 *


 * Title: TabSwitcher.java
 *


 *


 * E-Mail: 176291935@qq.com
 *


 *


 * QQ: 176291935
 *


 *


 * Http: iaiai.iteye.com
 *


 *


 * Create time: 2011-8-11
 *


 * 
 * @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);
}


@Override
protected void onFinishInflate() {
// TODO Auto-generated method stub
super.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 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() {


@Override
public 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);
}
}
}


};


@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
oldPosition = selectedPosition;
for (int i = 0; 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 
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;   
  
/**  
 *   
 *

 
 * Title: IaiaiActivity.java  
 *

 
 *

 
 * E-Mail: 176291935@qq.com  
 *

 
 *

 
 * QQ: 176291935  
 *

 
 *

 
 * Http: iaiai.iteye.com  
 *

 
 *

 
 * Create time: 2011-8-11  
 *

 
 *   
 * @author 丸子  
 * @version 0.0.1  
 */  
public class IaiaiActivity extends Activity {   
  
    @Override  
    public 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() {   
        @Override  
        public 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;   
            }   
        }   
  
    };   
}  




推荐阅读
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
author-avatar
神的禁卫军
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有