2015-12-21 19 views
1

Я знаю, что эта тема обсуждалась много раз, но проблема у меня другая. Я изменил цвет панели действий с помощью стиля. Но когда я создал вкладку с помощью панели действий, цвет фона не изменился для вкладок. Итак, вопрос в том, как изменить цвет вкладок. Во-вторых, я хочу удалить подчеркивание на вкладках. Заранее благодарю за любое разрешение.изменить цвет фона панели действий вкладки

Layout 
 

 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:tools="http://schemas.android.com/tools" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent"  
 
    tools:context=".MainActivity" > 
 

 
    <android.support.v4.view.ViewPager 
 
     android:id="@+id/pager" 
 
     android:layout_width="wrap_content" 
 
     android:layout_height="wrap_content" /> 
 

 
</RelativeLayout>
Pager Adapter 
 

 
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{ 
 
\t 
 
\t final int PAGE_COUNT = 2; 
 
\t 
 
\t /** Constructor of the class */ 
 
\t public MyFragmentPagerAdapter(FragmentManager fm) { 
 
\t \t super(fm); 
 
\t \t 
 
\t } 
 

 
\t /** This method will be invoked when a page is requested to create */ 
 
\t @Override 
 
\t public Fragment getItem(int arg0) { 
 
\t \t Bundle data = new Bundle(); 
 
\t \t switch(arg0){ 
 
\t \t 
 
\t \t \t /** Android tab is selected */ 
 
\t \t \t case 0: 
 
\t \t \t \t CreateEvent createEvent = new CreateEvent(); \t \t \t \t 
 
\t \t \t \t data.putInt("current_page", arg0+1); 
 
\t \t \t \t createEvent.setArguments(data); 
 
\t \t \t \t return createEvent; 
 
\t \t \t \t 
 
\t \t \t /** Apple tab is selected */ 
 
\t \t \t case 1: 
 
\t \t \t \t SearchEvent searchEvent = new SearchEvent(); 
 
\t \t \t \t data.putInt("current_page", arg0+1); 
 
\t \t \t \t searchEvent.setArguments(data); 
 
\t \t \t \t return searchEvent; \t 
 
\t \t } 
 
\t \t 
 
\t \t return null; 
 
\t } 
 

 
\t /** Returns the number of pages */ 
 
\t @Override 
 
\t public int getCount() { \t \t 
 
\t \t return PAGE_COUNT; 
 
\t } 
 
\t 
 
}
Main FragmentActivity: 
 

 
public class Event extends FragmentActivity{ 
 
\t 
 
\t ActionBar mActionBar; 
 
\t ViewPager mPager; 
 
\t Activity myActivity; 
 
\t 
 
\t @Override 
 
\t protected void onCreate(Bundle savedInstanceState) { 
 
\t \t // TODO Auto-generated method stub 
 
\t \t super.onCreate(savedInstanceState); 
 
\t \t setContentView(R.layout.event); 
 
\t \t 
 
\t \t /** Getting a reference to action bar of this activity */ 
 
     mActionBar = getActionBar(); 
 
     
 
     
 
     
 
     /** Set tab navigation mode */ 
 
     mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
 
     
 
     /** Getting a reference to ViewPager from the layout */ 
 
     mPager = (ViewPager) findViewById(R.id.pager); 
 
     
 
     /** Getting a reference to FragmentManager */ 
 
     FragmentManager fm = getSupportFragmentManager(); 
 
     
 
     /** Defining a listener for pageChange */ 
 
     ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener(){ 
 
     \t @Override 
 
     \t public void onPageSelected(int position) {   \t \t 
 
     \t \t super.onPageSelected(position); 
 
     \t \t mActionBar.setSelectedNavigationItem(position);   \t \t 
 
     \t }   \t 
 
     }; 
 
     
 
     mPager.setOnPageChangeListener(pageChangeListener); 
 
     
 
     MyFragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(fm); 
 
     
 
     mPager.setAdapter(fragmentPagerAdapter); 
 

 
     mActionBar.setDisplayShowTitleEnabled(true); 
 
     
 
     ActionBar.TabListener tabListener = new ActionBar.TabListener() { 
 
\t \t \t 
 
\t \t \t 
 

 
\t \t \t @Override 
 
\t \t \t public void onTabSelected(android.app.ActionBar.Tab tab, 
 
\t \t \t \t \t FragmentTransaction ft) { 
 
\t \t \t \t // TODO Auto-generated method stub 
 
\t \t \t \t mPager.setCurrentItem(tab.getPosition()); 
 
\t \t \t \t 
 
\t \t \t } 
 

 
\t \t \t @Override 
 
\t \t \t public void onTabUnselected(android.app.ActionBar.Tab tab, 
 
\t \t \t \t \t FragmentTransaction ft) { 
 
\t \t \t \t // TODO Auto-generated method stub 
 
\t \t \t \t 
 
\t \t \t } 
 

 
\t \t \t @Override 
 
\t \t \t public void onTabReselected(android.app.ActionBar.Tab tab, 
 
\t \t \t \t \t FragmentTransaction ft) { 
 
\t \t \t \t // TODO Auto-generated method stub 
 
\t \t \t \t 
 
\t \t \t } 
 
\t \t }; 
 

 
\t \t /** Creating Android Tab */ 
 
     Tab tab = mActionBar.newTab() 
 
          .setIcon(R.drawable.ic_action_edit) 
 
          .setTabListener(tabListener); 
 
     
 
     mActionBar.addTab(tab); 
 

 
     /** Creating Apple Tab */ 
 
     tab = mActionBar.newTab() 
 
         .setIcon(R.drawable.ic_action_search) 
 
         .setTabListener(tabListener);        
 

 
     mActionBar.addTab(tab);   
 

 
     
 
     
 
\t \t 
 
\t }

This is the current look of the tabs

+0

ваш вопрос в дан в моем ответе. –

ответ

3
mActionBar.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF"))); 
+0

Спасибо большое. Оно работало завораживающе. Как насчет удаления подчеркивания? –

+0

удалите подчеркивание из unselectedtab tabWidget.setStripeEnabled ("false") ;. , если вы хотите написать в xml, затем установите свойство tabwidget: android: tabStripeEnabled = false – ManiTeja

+0

Не использовал tabwidget, как вы можете видеть из «Макета». –

0

попробовать

mPager.setBackgroundColor(Color.BLACK); 
+0

Пожалуйста, добавьте более подробную информацию к вашему ответу. Возможно, попытайтесь объяснить, почему это решение должно работать. – naXa

0

Изменение ActioBar нижней линии цвета.

<item name="android:background">@drawable/your_theme_name</item> 
<item name="background">@drawable/your_theme_name</item> 

и изменить цвет Tab использовать этот код общее решение

mActionBar.setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF") 
+0

Ответ на изменение цвета вкладок ответил на вопрос ManiTeja, поэтому я принял его ответ. Кроме того, я не хочу менять цвет подчеркивания. Я просто хочу полностью удалить его. –

Смежные вопросы