• TabHost结合RadioButton实现主页的导航效果


      1 布局文件的设置,如下
      2 
      3 <?xml version="1.0" encoding="utf-8"?>
      4 <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
      5     android:id="@+id/tabhosts"
      6     android:layout_width="match_parent"
      7     android:layout_height="match_parent"
      8     android:layout_weight="1"
      9     android:background="#fff" >
     10 
     11     <LinearLayout
     12         android:layout_width="fill_parent"
     13         android:layout_height="match_parent"
     14         android:orientation="vertical" >
     15 
     16         <FrameLayout
     17             android:id="@android:id/tabcontent"
     18             android:layout_width="match_parent"
     19             android:layout_weight="1.0"
     20             android:layout_height="0.0dp" />
     21 
     22             <TabWidget
     23                 android:visibility="gone"
     24                 android:id="@android:id/tabs"
     25                 android:layout_width="match_parent"
     26                 android:layout_height="wrap_content"
     27                 android:layout_gravity="bottom"
     28                 android:orientation="horizontal"/>
     29 
     30                 <RadioGroup
     31                     android:layout_gravity="bottom"
     32                     android:gravity="center"
     33                     android:id="@+id/main_rdg"
     34                     android:background="@drawable/main_radio_bg"
     35                     android:layout_width="match_parent"
     36                     android:layout_height="wrap_content"
     37                     android:orientation="horizontal" >
     38 
     39                     <RadioButton
     40                         style="@style/bottom_radio_style"
     41                         android:id="@+id/rd_index"
     42                         android:layout_width="0dp"
     43                         android:layout_height="match_parent"
     44                            android:text="@string/index"
     45                            android:gravity="center_horizontal"
     46                            android:drawableTop="@drawable/icon_tab_homepage_checked"
     47                         android:layout_weight="1"
     48                          />
     49 
     50                     <RadioButton
     51                         style="@style/bottom_radio_style"
     52                         android:id="@+id/rd_near"
     53                         android:layout_width="0dp"
     54                         android:layout_height="match_parent"
     55                         android:layout_weight="1"
     56                         android:text="@string/near"
     57                         android:drawableTop="@drawable/icon_tab_nearby_checked" />
     58 
     59                     <RadioButton
     60                         style="@style/bottom_radio_style"
     61                         android:id="@+id/rd_own"
     62                         android:layout_width="0dp"
     63                         android:layout_height="match_parent"
     64                         android:layout_weight="1"
     65                         android:text="@string/own"
     66                         android:drawableTop="@drawable/icon_tab_mine_checked"/>
     67 
     68                     <RadioButton
     69                         style="@style/bottom_radio_style"
     70                         android:id="@+id/rd_more"
     71                         android:text="@string/more"
     72                         android:drawableTop="@drawable/icon_tab_more_checked"
     73                         android:layout_width="0dp"
     74                         android:layout_height="match_parent"
     75                         android:layout_weight="1" />
     76                 </RadioGroup>
     77         
     78     </LinearLayout>
     79 </TabHost>
     80 
     81 通过样式文件更改radioButton的效果
     82 
     83 <?xml version="1.0" encoding="utf-8"?>
     84 
     85 <resources xmlns:android="http://schemas.android.com/apk/res/android">
     86     
     87   <style name="bottom_radio_style">
     88         
     89       <item name="android:button">@null</item>
     90        
     91       <item name="android:gravity">center</item>
     92        
     93       <item name="android:background">@drawable/main_bottom_rd</item>
     94     
     95   </style>
     96 
     97 </resources>
     98 
     99 选择效果(选择一个标签是的一个选择效果)
    100 
    101 <?xml version="1.0" encoding="utf-8"?>
    102 
    103 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    104     
    105   <item  android:state_enabled="true" android:state_pressed="true" android:drawable="@drawable/main_radio_select"></item>
    106  
    107   <item android:state_enabled="true" android:state_checked="true" android:drawable="@drawable/main_radio_select"></item>
    108 
    109 </selector>
    110 
    111 activity中的代码设置如下112 
    113 package cn.liu.activity;
    114 public class MainActivity extends ActivityGroup {
    115     protected static final String TAG = "MainActivity";
    116     private TabHost tabHost = null;
    117     private RadioGroup rGroup;
    118 
    119     @Override
    120     protected void onCreate(Bundle savedInstanceState) {
    121         super.onCreate(savedInstanceState);
    122         // 设置手机全屏显示
    123         requestWindowFeature(Window.FEATURE_NO_TITLE);
    124         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    125                 WindowManager.LayoutParams.FLAG_FULLSCREEN);
    126         setContentView(R.layout.main);
    127         // 通过findviewbyId这种方式找到tabhost,就必须要调用
    128         // setup方法,而且如果当前类,没有集成ActivityGroup,会报E/AndroidRuntime(380): java.lang.RuntimeException: Unable to start activity
    129                ComponentInfo{cn.liu.eat/cn.liu.activity.MainActivity}: java.lang.IllegalStateException: Did you forget to call 'public void
    130                   setup(LocalActivityManager activityGroup)且setup必须要设置成this.getLocalActivityManager()这样才不会出问题
    131         tabHost = (TabHost) this.findViewById(R.id.tabhosts);
    132         tabHost.setup(this.getLocalActivityManager());
    133         TabSpec tabSpec1 = tabHost.newTabSpec("tab1").setIndicator("tab1")
    134                 .setContent(new Intent(this, HomeActivity.class));
    135         TabSpec tabSpec2 = tabHost.newTabSpec("tab2").setIndicator("tab2")
    136                 .setContent(new Intent(this, NearActivity.class));
    137         TabSpec tabSpec3 = tabHost.newTabSpec("tab3").setIndicator("tab3")
    138                 .setContent(new Intent(this, MineActivity.class));
    139         TabSpec tabSpec4 = tabHost.newTabSpec("tab4").setIndicator("tab4")
    140                 .setContent(new Intent(this, MoreActivity.class));
    141 
    142         tabHost.addTab(tabSpec1);
    143         tabHost.addTab(tabSpec2);
    144         tabHost.addTab(tabSpec3);
    145         tabHost.addTab(tabSpec4);
    146         tabHost.setCurrentTab(0);
    147 
    148         rGroup = (RadioGroup) this.findViewById(R.id.main_rdg);
    149         rGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    150             @Override
    151             public void onCheckedChanged(RadioGroup group, int checkedId) {
    152                 switch (checkedId) {
    153                 case R.id.rd_index:
    154                     tabHost.setCurrentTabByTag("tab1");
    155                     break;
    156                 case R.id.rd_near:
    157                     tabHost.setCurrentTabByTag("tab2");
    158                     break;
    159                 case R.id.rd_own:
    160                     tabHost.setCurrentTabByTag("tab3");
    161                     break;
    162                 case R.id.rd_more:
    163                     tabHost.setCurrentTabByTag("tab4");
    164                     break;
    165                 }
    166             }
    167         });
    168 
    169     }
    170 
    171 }
    172  
  • 相关阅读:
    第一章(认识jQuery)
    csv、txt读写及模式介绍
    命令行参数
    WebDriverWait等设置等待时间和超时时间
    js加载页面使用execute_script选定加载位置
    pip镜像源配置
    python字符编码
    scrapy设置代理
    urllib2设置代理
    禁止chrome自动更新
  • 原文地址:https://www.cnblogs.com/tianshidechibang234/p/3753989.html
Copyright © 2020-2023  润新知