Android 自定义选项卡按钮和选项卡位置

论坛 期权论坛 脚本     
匿名技术用户   2021-1-7 02:43   180   0

这是前段时间做的一个项目的一部分,我把它单独提取出来!效果如下图:

可以把选项卡放在一个Activity的任何位置,自定义了选项卡按钮的背景颜色!

basicview_tab.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="#852741"
    >
     <!-- 导入别的xml文件 -->
 <include layout="@layout/title_bar"/>
    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"  
     android:id="@android:id/tabhost" android:layout_width="fill_parent"  
      android:layout_height="fill_parent">  
   <LinearLayout android:orientation="vertical"  
    android:layout_width="fill_parent" android:layout_height="fill_parent"> 
   
      <TabWidget android:id="@android:id/tabs"  
      android:layout_width="fill_parent"   
      android:layout_height="wrap_content" /> 
      <FrameLayout android:id="@android:id/tabcontent"  
      android:layout_width="fill_parent"   
      android:layout_height="wrap_content"  
      android:layout_weight="3" >  
         
      </FrameLayout>
      
       
    </LinearLayout>  
</TabHost>  
</LinearLayout>

自定义选项卡按钮 TabButton

public class TabButton extends LinearLayout {

 public TabButton(Context c, int drawable, String text) {
  super(c);
  LayoutInflater inflater = LayoutInflater.from(c);
  View view = inflater.inflate(R.layout.tab_button_layout, null);

  addView(view);

  TextView tv = (TextView)     view.findViewById(R.id.tab_button_text);

  ImageView iv = (ImageView) view.findViewById(R.id.tab_button_img);
  iv.setImageResource(drawable);
  tv.setText(text);
 }
}

布局 tab_button_layout.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="62dip"
    android:background="@drawable/tab_selector_bg"
    android:gravity="center"
    >
    <ImageView 
     android:layout_width="240dip"
     android:layout_height="wrap_content"
     android:id="@+id/tab_button_img"
     android:layout_gravity="center_horizontal"
     />
 <TextView  
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/tab_button_text"
     android:layout_gravity="center"
     android:textColor="#ffffff"
    />
</LinearLayout>

主界面代码 BasicViewTab

public class BasicViewTab extends TabActivity {

 private TabHost tabHost;
 private TextView textView;

 /* (non-Javadoc)
  * @see android.app.ActivityGroup#onCreate(android.os.Bundle)
  */
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.basicview_tab);
  
  Intent intent = new Intent(BasicViewTab.this,TabExpenses.class);
  intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  textView = (TextView)findViewById(R.id.tv_title_bar);
  textView.setText("Basic View Factor");
  
  tabHost = getTabHost(); 
  tabHost.addTab(tabHost.newTabSpec("tab1")
    .setIndicator(new TabButton(this,
      R.drawable.tabbar_icon_basic_expenses_selector,
      "Expenses"))
          .setContent(intent));
  tabHost.addTab(tabHost.newTabSpec("tab2")
    .setIndicator(new TabButton(this,
      R.drawable.tabbar_icon_basic_setting_selector,
      "Setting"))
          .setContent(new Intent(this, TabSetting.class)));

  tabHost.setCurrentTab(0);
  
  ImageView backHome = (ImageView) findViewById(R.id.btn_back_home);
  backHome.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    BasicViewTab.this.finish();
   }
  });
 }
}

附件里有完整代码!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP