【问题标题】:PagerSlidingTabStrip cannot help me change tab Indicator color [Android]PagerSlidingTabStrip 无法帮助我更改标签指示器颜色 [Android]
【发布时间】:2014-06-11 16:32:22
【问题描述】:

我已经按照示例进行了

https://github.com/astuetz/PagerSlidingTabStrip

通过提取资源 xml 属性和 Pager 类来实现到我的类中,通过设置 SetIndicator 使选项卡指示器颜色不是淡蓝色而是其他颜色

当涉及到实现时,我似乎无法如愿改变颜色。您能告诉我如何导入库项目或其他方式,以便我可以更改选项卡指示器颜色吗?

以下是我的代码:

import android.os.Bundle;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.FragmentTransaction;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class MainActivity extends FragmentActivity implements TabListener {

    private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private ActionBar actionBar;
    // Tab titles
    private String[] tabs ;
    private PagerSlidingTabStrip strip;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Initilization

        strip = (PagerSlidingTabStrip) findViewById(R.id.tabs);
        viewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();     
        actionBar.setBackgroundDrawable(new ColorDrawable(Color.BLACK));
        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

        viewPager.setAdapter(mAdapter);     
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        
        strip.setIndicatorColor(Color.parseColor("#00ffbf"));
    //  strip.setShouldExpand(true);
        //strip.setIndicatorColor(Color.parseColor("#00ffbf"));
    //  strip.setViewPager(viewPager);


        // Adding Tabs
        tabs = this.getResources().getStringArray(R.array.options);

        for (String tab_name : tabs) {


            actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));
        }

        /**
         * on swiping the viewpager make respective tab selected
         * */
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);
                //actionBar.getTabAt(position).getCustomView().setBackgroundColor(Color.parseColor("#00ffbf"));
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });


    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        // on tab selected
        // show respected fragment view

        viewPager.setCurrentItem(tab.getPosition());
        //  tab.set
        //  

    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    }

    @Override
    protected void onResume() {
        super.onResume();
        //      mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onPause() {
        super.onPause();
        //      mSensorManager.unregisterListener(mSensorListener);     
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // The action bar home/up action should open or close the drawer.
        // ActionBarDrawerToggle will take care of this.
        /*  if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }*/
        // Handle action buttons
        switch(item.getItemId()) {
        /*      case R.id.action_profile:
            startActivity(new Intent(MainActivity.this, Profile.class));
            return true;*/

        default:
            return super.onOptionsItemSelected(item);
        }
    }

}

【问题讨论】:

    标签: android colors tabs


    【解决方案1】:

    parseColor() 支持两种格式:#RRGGBB#AARRGGBB,你试过 alpha 格式吗?:

    strip.setIndicatorColor(Color.parseColor("#ff00ffbf"));
    

    如果这不起作用,您可以尝试直接从 PagerSlidingTabStrip 类更改默认颜色:

    private int indicatorColor = 0xFF00FFBF;
    

    【讨论】:

    • 然后,将其写在问题的标题中,而不是“标签指示器颜色”中。为此使用 setUnderlineColor() 方法。
    【解决方案2】:

    试试这个,方法简单

    <android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabIndicatorColor="@android:color/white" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多