如何在Tab Layout View Pager android中更改一个选项卡的文本颜色

时间:2016-05-06 10:26:16

标签: android android-viewpager android-tablayout

我在tabLayout中只有两个标签说目标和学生。现在,我希望学生文本的颜色为灰色,直到我检查目标复选框。选中复选框后,学生文本的颜色应从灰色变为白色。以下是标签图片: - image 1

这是图片2

image 2

以下是TabLayout的代码: -

public class AllKPIActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPagerAdapter adapter;


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


        toolbar = (Toolbar) findViewById(R.id.toolbar);


        viewPager = (CustomViewPager) findViewById(R.id.viewpager);
        viewPager.setPagingEnabled(false);
        adapter = new ViewPagerAdapter(getSupportFragmentManager());
        setupViewPager(viewPager);

        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {


            }

            @Override
            public void onPageSelected(int position) {
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }

        });

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);


    private void setupViewPager(ViewPager viewPager) {
        adapter.addFragment(new ObjectivesFragment(), "Objectives");
        adapter.addFragment(new StudentsFragment(), "Students");
        viewPager.setAdapter(adapter);
    }


}

class ViewPagerAdapter extends FragmentStatePagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                ObjectivesFragment allFragment = new ObjectivesFragment();
                Bundle bundle = new Bundle();
                bundle.putString("uuid", uuid);
                allFragment.setArguments(bundle);
                return allFragment;
            case 1:
                studentsFragment = new StudentsFragment();
                Bundle bundle_students = new Bundle();
                bundle_students.putString("uuid", uuid);
                studentsFragment.setArguments(bundle_students);
                return studentsFragment;
        }
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    @Override
    public int getItemPosition(Object object) {
        if (object instanceof UpdateableFragment) {
            ((UpdateableFragment) object).update(selectedChildList);
        } else if (object instanceof ObjectivesFragment) {
        }
        return super.getItemPosition(object);
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }


}

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 10 && resultCode == requestCode) {
            if (data != null) {
                String colorCode = data.getExtras().get("colorCode").toString();
                String judgementName = data.getExtras().get("judgementName").toString();
                int position = data.getIntExtra("position", 0);
                studentsFragment.onJudgementSelected(colorCode, judgementName, position);

            }
        } else if (requestCode == 1001) {
            if (data != null) {
                String fileName = data.getExtras().get("File Name").toString();
                int position = data.getIntExtra("position", 0);
                System.out.print(fileName);
                studentsFragment.onCameraResult(fileName, position);
            }

        } else if (requestCode == 11) {
            if (data != null) {
                File fileName = (File) data.getExtras().get("fileName");
                int position = data.getIntExtra("position", 0);
                studentsFragment.onNotesCreated(fileName, position);
            }
        } else if (requestCode == StudentAdapter.READ_REQUEST_PREVIEW_CODE) {

            if (data != null) {
                setResult(RESULT_OK, data);
            }

        } else if (requestCode == StudentAdapter.AVIARY_EDITOR_RESULT) {

            if (data != null) {
  /*          if (intent != null && mAdapter != null) {
                Bundle extra = intent.getExtras();
                if (extra != null && extra.getBoolean(Constants.EXTRA_OUT_BITMAP_CHANGED)) {
                    if (useInternalStorage()) {
                        onImageModified();
                    } else {
                        //the file is on the SD card and must be copied back to the internal
                        //file structure. We then delete the temp file on the SD card.
                        SharedExecutorService.getInstance().execute(new MainThreadRunnable() {
                            boolean success;

                            @Override
                            public void runOnBackground() {
                                success = mMediaManager.copyFromTemp(PreviewActivity.this,
                                        mAdapterPosition);
                            }

                            @Override
                            public void runOnMain() {
                                mMediaManager.clearTempFiles(PreviewActivity.this);
                                if (!success) {
                                    AndroidUtils.buildSimpleErrorDialog(PreviewActivity.this)
                                            .setMessage(R.string.preview_error).show();
                                    return;
                                }

                                onImageModified();
                            }
                        });
                        return;
                    }
                }
            }*/
            }

        }
    }
}

2 个答案:

答案 0 :(得分:0)

试试这段代码:

ArrayList

答案 1 :(得分:0)

我是通过

实现的

in xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/tab_background_selected"
        android:state_selected="true" />

    <item android:drawable="@color/tab_background_unselected" />
</selector>

而tab_background是一个选择器

private LinearLayout mTabsLinearLayout;

@Override
public void onPageScrolled(int i, float v, int i2) {
    //overriden method not used
}

@Override
public void onPageSelected(int position) {
    for (int i = 0; i < mTabsLinearLayout.getChildCount(); i++) {
        TextView tv = (TextView) mTabsLinearLayout.getChildAt(i);
        if (i == position) {
            tv.setTextColor(Color.WHITE);
        } else {
            tv.setTextColor(Color.GREY);
        }
    }
}

@Override
public void onPageScrollStateChanged(int i) {
    //overriden method not used
}

<强>编辑:

对于文本颜色,此处描述了该方法(https://github.com/astuetz/PagerSlidingTabStrip/issues/141

public void setUpTabStrip() {

    //your other customizations related to tab strip
    // Set first tab selected
    mTabsLinearLayout = ((LinearLayout) tabStrip.getChildAt(0));
    for (int i = 0; i < mTabsLinearLayout.getChildCount(); i++) {
        TextView tv = (TextView) mTabsLinearLayout.getChildAt(i);

        if (i == 0) {
            tv.setTextColor(Color.WHITE);
        } else {
            tv.setTextColor(Color.GREY);
        }
    }
}

在创建活动时设置标签时使用此功能

Traceback (most recent call last):
  File "urlscript.py", line 356, in <module>
    postcheck[dc]()
  File "urlscript.py", line 17, in DC8Prod
    pmlogin(url,payload)
  File "urlscript.py", line 254, in pmlogin
    mainpage=requests.get(url,payload)
TypeError: get() takes 1 positional argument but 2 were given
相关问题