Android ActionBar以编程方式自定义选项卡
我试图以编程方式在ActionBar中创建自定义选项卡。我有两个错误: 1-我想根据是否选中选项卡来更改文本颜色,但我没有得到更改。tab1始终具有选定选项卡的颜色 2-我的选项卡的备份未完成。 我需要帮助。多谢各位 JAVAAndroid ActionBar以编程方式自定义选项卡,android,background,tabs,android-actionbar,Android,Background,Tabs,Android Actionbar,我试图以编程方式在ActionBar中创建自定义选项卡。我有两个错误: 1-我想根据是否选中选项卡来更改文本颜色,但我没有得到更改。tab1始终具有选定选项卡的颜色 2-我的选项卡的备份未完成。 我需要帮助。多谢各位 JAVA private void cargarTabs() { TabsPagerAdapter mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); viewPager.setAdapt
private void cargarTabs() {
TabsPagerAdapter mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
viewPager.setCurrentItem(0);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
cargarTextoTabs();
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
private void cargarTextoTabs() {
nombresTabs = new String[2];
switch (perfilObj.getIdioma()) {
case 1:
nombresTabs[0] = Espanol.MAIN_LISTADO;
nombresTabs[1] = Espanol.MAIN_MAPA;
break;
case 2:
nombresTabs[0] = Ingles.MAIN_LISTADO;
nombresTabs[1] = Ingles.MAIN_MAPA;
break;
}
for (int i = 0; i < nombresTabs.length; i++) {
Tab tab = actionBar.newTab();
tab.setTabListener(this);
switch (i) {
case 0:
tab.setCustomView(cargarTabSel(i));
break;
default:
tab.setCustomView(cargarTabUnSel(i));
break;
}
actionBar.addTab(tab, i);
}
}
private View cargarTabSel(int i) {
RelativeLayout r = (RelativeLayout) getLayoutInflater().inflate(
R.layout.tab, null);
TextView tv = (TextView) r.findViewById(R.id.tab_texto);
RelativeLayout rl = (RelativeLayout) r.findViewById(R.id.tab_fondo);
int fondo = 0, color = 0;
switch (perfilObj.getColor()) {
case 1:
color = R.color.blanco;
fondo = R.drawable.tab_indicator_negro;
break;
case 2:
color = R.color.grisOscuro;
fondo = R.drawable.tab_indicator_blanco;
break;
default:
color = R.color.blanco;
fondo = R.drawable.tab_indicator_negro;
}
tv.setText(nombresTabs[i]);
tv.setTextColor(getResources().getColor(color));
tv.setTextSize(14);
tv.setTypeface(Modulo.fontUbuntuBold(this));
tv.setEllipsize(TruncateAt.END);
tv.setSingleLine();
tv.setPadding(5, 0, 5, 0);
rl.setBackgroundResource(fondo);
return r;
}
private View cargarTabUnSel(int i) {
RelativeLayout r = (RelativeLayout) getLayoutInflater().inflate(
R.layout.tab, null);
TextView tv = (TextView) r.findViewById(R.id.tab_texto);
RelativeLayout rl = (RelativeLayout) r.findViewById(R.id.tab_fondo);
int fondo = 0;
switch (perfilObj.getColor()) {
case 1:
fondo = R.drawable.tab_indicator_negro;
break;
case 2:
fondo = R.drawable.tab_indicator_blanco;
break;
default:
fondo = R.drawable.tab_indicator_negro;
}
tv.setText(nombresTabs[i]);
tv.setTextColor(getResources().getColor(R.color.gris));
tv.setTextSize(14);
tv.setTypeface(Modulo.fontUbuntu(this));
tv.setEllipsize(TruncateAt.END);
tv.setSingleLine();
tv.setPadding(5, 0, 5, 0);
rl.setBackgroundResource(fondo);
return r;
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
int pos = tab.getPosition();
viewPager.setCurrentItem(pos);
tab.setCustomView(cargarTabSel(pos));
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
tab.setCustomView(cargarTabUnSel(tab.getPosition()));
}
private void cargarTabs(){
TabsPagerAdapter mAdapter=新的TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
viewPager.setCurrentItem(0);
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡);
cargarTextoTabs();
viewPager.setOnPageChangeListener(新的viewPager.OnPageChangeListener(){
@凌驾
已选择页面上的公共无效(内部位置){
actionBar.setSelectedNavigationItem(位置);
}
@凌驾
已滚动页面上的公共void(int arg0、float arg1、int arg2){
}
@凌驾
公共无效onPageScrollStateChanged(int arg0){
}
});
}
私人住宅{
nombresTabs=新字符串[2];
开关(perfilObj.getIdioma()){
案例1:
nombresTabs[0]=Espanol.MAIN_LISTADO;
nombresTabs[1]=Espanol.MAIN_MAPA;
打破
案例2:
nombresTabs[0]=Ingles.MAIN_LISTADO;
nombresTabs[1]=Ingles.MAIN_MAPA;
打破
}
对于(int i=0;i
tab.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tab_fondo"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tab_texto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"/>
</RelativeLayout>
我不确定它是否能完全满足您的需求,但请看一看:请参考此