如何将活动的主题更改为android中的片段更改 [英] How do I change an activity's theme as fragment change in android

查看:74
本文介绍了如何将活动的主题更改为android中的片段更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用ViewPager在活动中的片段之间切换。每个片段都有不同的背景颜色,所以我设置了不同的主题。我知道我应该在

Hi, I am using ViewPager to switch between fragments in an activity. Each fragment has its different background color, so I set different Themes. I know i'm supposed to set an activity's Theme before

setContentView(R.layout.activity_walk_through);

之前设置一个活动的主题。但它有点棘手。当活动的当前项目设置为片段时,如何为活动设置不同的主题。这是我的代码



我尝试过:



活动的活动< br $>


. But it's kinda tricky. How do I set different themes for the activity when activity's current item is set to a fragment. Here's my code

What I have tried:

Activity's activity

ViewPagerAdapter viewPagerAdapter;
ViewPager mViewPager;
static final String KEY_IS_FIRST_TIME =  "com.geeks14.sureremit.first_time";
static final String KEY =  "com.com.geeks14.sureremit";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_walk_through);
    viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
    viewPagerAdapter.addFragment(new WalkThroughOneFragment(), "Walkthrough One");
    viewPagerAdapter.addFragment(new WalkThroughTwo(), "Walkthrough Two");
    viewPagerAdapter.addFragment(new WalkThroughThreeFragment(), "Walkthrough Three");
    mViewPager = (ViewPager)findViewById(R.id.pager);
    mViewPager.setAdapter(viewPagerAdapter);

    setTitle("");
}
public void setCurrentItem (int item, boolean smoothScroll) {
    mViewPager.setCurrentItem(item, smoothScroll);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> fragmentList = new ArrayList<>();
    private final List<String> fragmentTitleList = new ArrayList<>();
    public ViewPagerAdapter(FragmentManager manager){
        super(manager);
    }
    @Override
    public Fragment getItem(int position){
        return fragmentList.get(position);
    }

    @Override
    public int getCount(){
        return fragmentList.size();
    }
    public void addFragment(Fragment fragment, String title){
        fragmentList.add(fragment);
        fragmentTitleList.add(title);
    }
    @Override
    public CharSequence getPageTitle(int position){
        return fragmentTitleList.get(position);
    }
}





这是我片段之一的活动



Here's one of my fragment's activity

public static WalkThroughOneFragment newInstance(String param1, String param2) {
        WalkThroughOneFragment fragment = new WalkThroughOneFragment();
        Bundle args = new Bundle();
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//i set activity theme here but it did nothing
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_walk_through_one, container, false);
        nextButton = (FontButton)v.findViewById(R.id.FragmentOneNextButton);
        
        nextButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ((WalkThroughActivity)getActivity()).setCurrentItem(1, true);//fragment is set here
            }
        });
        return v;
    }

推荐答案

好的,经过大量试用,我终于找到了这个这里

我所要做的就是隐藏状态栏,这样,每个片段都会占据全屏。我通过将下面的代码放在活动中隐藏状态栏我在我的片段之前在setContentView()之前



Ok, after lots of trial, i finally found this here
All i had to do was hide the status bar, that way, each fragments take up fullscreen. I hid the status bar by placing the code below in the activity i had my fragments in before setContentView()

View decorView = getWindow().getDecorView();
        // Hide the status bar.
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);


这篇关于如何将活动的主题更改为android中的片段更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆