我们经常遇到对actionBarTab 进行操作的情况。现在记录修改它的样式的方法,已经如何自定义tab的显示布局

1.在你的theme主题中添加<item name="android:actionBarTabStyle">@style/backupActionBarTabView</item>

<resources>

    <style name="BackupRestore.Theme" parent="@android:style/Theme.Funui">
<item name="android:windowFullscreen">true</item>
<item name="android:actionBarStyle">@style/actionbar_def_style</item>
<item name="android:actionBarTabStyle">@style/backupActionBarTabView</item>
<item name="android:actionBarTabTextStyle">@style/customActionBarTabTextStyle</item>
<item name="android:actionModeStyle">@style/actionmode_def_style</item>
</style>
<style name="customActionBarTabTextStyle">
<item name="android:textColor">@color/action_bar_title_text_color</item>
<item name="android:textSize">@dimen/action_bar_title_text_size</item>
<item name="android:paddingStart">@dimen/action_bar_title_text_size</item>
</style>
<style name="backupActionBarTabView" parent="@android:style/Widget.Holo.Light.ActionBar.TabView">
<item name="android:background">#04cd74</item>
<item name="android:gravity">center_horizontal</item>
<item name="android:paddingStart">66dip</item>
</style> </resources>

2.在<style name="backupActionBarTabView" parent="@android:style/Widget.Holo.Light.ActionBar.TabView">中定义相关属性

1)<item name="android:paddingStart">66dip</item>这个可以更改标题的位置,但是,它永远相对的都是 自己框内的位置,例如,如果你有两个标题,那么你的第一个标题就会距离左边屏幕66dip,第二个标题就会距离中间分割位置66dip,<item name="android:paddingEnd">66dip</item>属性跟这个类似

2)其实<item name="android:actionBarTabTextStyle"> @style/customActionBarTabTextStyle</item>也可以调节标题的位置,只不过它调节的是text相对 于框的位置<item name="android:paddingStart">@dimen/action_bar_title_text_size</item>

不过,这两个用起来非常的不方便,至于怎么让两个标题都往中间靠拢的方法,我们可以自定于布局

2)自定义tab显示内容布局

1.定义各自的mxl文件,如backup_tab.xml这里仅仅需要一个textview就行了

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent" >
<TextView
android:layout_alignParentLeft="true"
android:text="@string/set_label_local_albums"
android:layout_height="wrap_content"
<!--如果设置为wrap_content就不行--> android:layout_width="match_parent"
android:paddingTop="33dp"
android:paddingLeft="21dp"
android:textColor="@color/action_bar_title_text_color"
android:textSize="@dimen/action_bar_title_text_size" />
</RelativeLayout>

2.在代码中引用

private void setupActionBar(Bundle state) {

        ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); Tab tab = actionBar.newTab();
/* Vanzo:zhangshuli on: Thu, 15 Jan 2015 10:37:32 +0000
tab.setText(R.string.backup);
*/
tab.setCustomView(R.layout.backup_tab);
// End of Vanzo: zhangshuli
tab.setTabListener(new TabListener(mBackupFragment, Constants.BACKUP));
actionBar.addTab(tab); tab = actionBar.newTab();
/* Vanzo:zhangshuli on: Thu, 15 Jan 2015 10:38:05 +0000
tab.setText(R.string.restore);
*/
tab.setCustomView(R.layout.restore_tab);//资源的引用,直接是引用layout就可以了
// End of Vanzo: zhangshuli
tab.setTabListener(new TabListener(mRestoreFragment, Constants.RESTORE));
actionBar.addTab(tab); if(state != null){
int position = state.getInt(STATE_TAB, 0);
if(position != 0){
actionBar.setSelectedNavigationItem(position);
}
}
}

但是,刚开始在更改actionBarTab的时候,遇到了一件非常奇怪的事情,就是当我自定义一个布局的时候(如上),无论我怎么调节,textview总是距离中间有一段位置,虽然我设置了Relativelayout是充满父容器的。通过hierarchy看布局,你会发现Relativelayout跟textview的宽度是一样的。后来怎么试验都不行.

后来我就想,既然他们两个都是一样的,那么如果我分别强制性的设置这两个控件的宽度不一样呢。然后,我就设置了两个宽度分别为178dp结果真的生效了。至此得出一个结论,就是textview决定了一切,必须把两个控件的宽度都设置为match_parent,完美实现了效果

最新文章

  1. C#:解决WCF中服务引用 自动生成代码不全的问题。
  2. canvas画圆(一)
  3. javascript移动设备Web开发中对touch事件的封装实例
  4. Apache2.4.6服务器安装及配置
  5. JS开发windows phone8.1系列之2
  6. Entity Framework 异常档案
  7. 关于fastclick.js
  8. Java开发工程师必会做试题
  9. Effective Java设定游戏 - 就是爱Java
  10. Elastarchsearch安装搭建(一)
  11. AVL树 高度平衡的二叉查找树
  12. setTimeout和setInterval实现滚动轮播中,清除定时器的思考
  13. javaEE学习路线与目标
  14. postgresql命令
  15. python字符编码与文件打开
  16. VBA调用DOS程序两种方法
  17. 使用expect解决shell交互问题
  18. ES线程池
  19. MongoDB基本方法
  20. Hibernate缓存策略

热门文章

  1. Python安装(一)
  2. 七 HBase表结构设计
  3. ArcGIS api for javascript——查找任务-在地图上查找要素
  4. sql暂时表的创建
  5. linux下oracle11G DG搭建(三):环绕备库搭建操作
  6. C. Diverse Permutation(Codeforces Round #275(div2)
  7. dotnet 命令的使用
  8. display 表格模型值
  9. ES6学习笔记(五)函数的扩展
  10. 【CS Round #37 (Div. 2 only) B】Group Split