• Android腾讯微博客户端开发一:在下方的Tab的实现


    avaEye处女贴 

     

     

    下面的是res下drawable文件夹下的一个selector文件,作用主要是当每一个tab选项被点击,获得焦点以及被选中的时候背景都会发生变化 

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <selector  
    3.   xmlns:android="http://schemas.android.com/apk/res/android">  
    4.     <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_timeline_normal" /></span>  
    5.     <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_timeline_active" /></span>  
    6.     <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_timeline_normal" /></span>  
    7.     <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_timeline_active" /></span>  
    8.     <item android:state_pressed="true" android:drawable="@drawable/tab_timeline_normal" /></span>  
    9. </selector>  


    注意一定要继承TabActivity 

    Java代码  收藏代码
    1. public class MainActivity extends TabActivity {  
    2.     private TabHost tabHost;  
    3.     private RadioGroup mainbtGroup;  
    4.     private static final String HOME = "主页";  
    5.     private static final String REFER = "提及";  
    6.     private static final String SECRET = "私信";  
    7.     private static final String SEARCH = "搜索";  
    8.     private static final String ATTENTIION = "关注";  
    9.       
    10.   
    11.     @Override  
    12.     public void onCreate(Bundle savedInstanceState) {  
    13.         super.onCreate(savedInstanceState);  
    14.         setContentView(R.layout.tabhost);//设置选项卡使用的布局文件  
    15.           
    16.         tabHost = this.getTabHost();  
    17.   
    18.         View view1 = View.inflate(MainActivity.this, R.layout.tab, null);  
    19.         ((ImageView) view1.findViewById(R.id.tab_imageview_icon)).setImageResource(R.drawable.tab_timeline_selector);//设置每一个tab的图标  
    20.         ((TextView) view1.findViewById(R.id.tab_textview_title)).setText(HOME);  
    21.   
    22.         TabHost.TabSpec spec1 = tabHost.newTabSpec(HOME)  
    23.                 .setIndicator(view1)  
    24.                 .setContent(new Intent(this, HomeTimeLineActivity.class));  
    25.         tabHost.addTab(spec1);  
    26.           
    27.         View view2 = View.inflate(MainActivity.this, R.layout.tab, null);  
    28.         ((ImageView) view2.findViewById(R.id.tab_imageview_icon)).setImageResource(R.drawable.tab_atme_selector);  
    29.         ((TextView) view2.findViewById(R.id.tab_textview_title)).setText(REFER);  
    30.   
    31.         TabHost.TabSpec spec2 = tabHost.newTabSpec(REFER)  
    32.                 .setIndicator(view2)  
    33.                 .setContent(new Intent(this, ReferActivity.class));  
    34.         tabHost.addTab(spec2);  
    35.           
    36.         View view3 = View.inflate(MainActivity.this, R.layout.tab, null);  
    37.         ((ImageView) view3.findViewById(R.id.tab_imageview_icon)).setImageResource(R.drawable.tab_message_selector);  
    38.         ((TextView) view3.findViewById(R.id.tab_textview_title)).setText(SECRET);  
    39.   
    40.         TabHost.TabSpec spec3 = tabHost.newTabSpec(SECRET)  
    41.                 .setIndicator(view3)  
    42.                 .setContent(new Intent(this, MessageActivity.class));  
    43.         tabHost.addTab(spec3);  
    44.           
    45.         View view4 = View.inflate(MainActivity.this, R.layout.tab, null);  
    46.         ((ImageView) view4.findViewById(R.id.tab_imageview_icon)).setImageResource(R.drawable.tab_explore_selector);  
    47.         ((TextView) view4.findViewById(R.id.tab_textview_title)).setText(SEARCH);  
    48.   
    49.         TabHost.TabSpec spec4 = tabHost.newTabSpec(SEARCH)  
    50.                 .setIndicator(view4)  
    51.                 .setContent(new Intent(this, SearchActivity.class));  
    52.         tabHost.addTab(spec4);  
    53.           
    54.         View view5 = View.inflate(MainActivity.this, R.layout.tab, null);  
    55.         ((ImageView) view5.findViewById(R.id.tab_imageview_icon)).setImageResource(R.drawable.tab_focus_selector);  
    56.         ((TextView) view5.findViewById(R.id.tab_textview_title)).setText(ATTENTIION);  
    57.   
    58.         TabHost.TabSpec spec5 = tabHost.newTabSpec(ATTENTIION)  
    59.                 .setIndicator(view5)  
    60.                 .setContent(new Intent(this, AttentionActivity.class));  
    61.         tabHost.addTab(spec5);  
    62.     }  


    下面的就是tabhost布局文件关键是tabhost,tabcontent和tabs这三个id一定要正确 

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <TabHost android:id="@android:id/tabhost"  android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">  
    3.     <RelativeLayout android:orientation="vertical"  
    4.         android:layout_width="fill_parent" android:layout_height="fill_parent">  
    5.         <FrameLayout android:id="@android:id/tabcontent"  
    6.             android:layout_width="fill_parent" android:layout_height="fill_parent" />  
    7.         <TabWidget android:id="@android:id/tabs" <span style="background-color: #ff0000;">android:background="@drawable/tab_bkg"</span> android:fadingEdge="none"  
    8.             android:fadingEdgeLength="0.0px" android:layout_width="fill_parent"  
    9.             android:layout_height="wrap_content"  
    10.             android:layout_alignParentBottom="true" />  
    11.     </RelativeLayout>  
    12. </TabHost>  
    Java代码  收藏代码
    1. android:layout_alignParentBottom="true" 把tab的五个按钮挨着父控件的底部,在android里面RelativeLayout很好用  


    下面的是每一个tab项的布局文件上面是图片下面是文字 

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"  
    3.   xmlns:android="http://schemas.android.com/apk/res/android">  
    4.     <ImageView android:id="@+id/tab_imageview_icon" android:layout_width="fill_parent" android:layout_height="32.0dip" android:scaleType="fitCenter" />  
    5.     <TextView android:id="@+id/tab_textview_title" android:textSize="11.0sp"  android:ellipsize="marquee" android:gravity="center" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:marqueeRepeatLimit="1" />  
    6. </LinearLayout>  



     
    是一张.9.png格式的图片,这个很有用哟在android里,经常用来处理图片拉升的问题。左边和上面的小点表示要拉伸的地方,右边和下面的表示内容区。关于.9.png格式图片在android里面得更多应用看http://developer.android.com/guide/developing/tools/draw9patch.html 

  • 相关阅读:
    软件安装的list(0918)
    putty配色备份
    曹工谈Spring Boot:Spring boot中怎么进行外部化配置,一不留神摔一跤;一路debug,原来是我太年轻了
    使用Hystrix的插件机制,解决在使用线程隔离时,threadlocal的传递问题
    曹工谈并发:Synchronized升级为重量级锁后,靠什么 API 来阻塞自己
    曹工力荐:调试 jdk 中 rt.jar 包部分的源码(可自由增加注释,修改代码并debug)
    曹工杂谈--只用一个命令,centos系统里装了啥软件,啥时候装的,全都清清楚楚
    曹工说Redis源码(7)-- redis server 的周期执行任务,到底要做些啥
    曹工说Redis源码(6)-- redis server 主循环大体流程解析
    曹工说Redis源码(5)-- redis server 启动过程解析,以及EventLoop每次处理事件前的前置工作解析(下)
  • 原文地址:https://www.cnblogs.com/afly/p/2360230.html
Copyright © 2020-2023  润新知