每个片段中的不同颜色状态栏

时间:2016-02-11 18:50:18

标签: android colors android-actionbar fragment statusbar

如何为每个片段定义不同的状态栏和操作栏颜色?

目前。

enter image description here

外观如何。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

首先,我强烈建议您迁移到新方法 - Toolbar。它更加灵活,您可以将其自定义为普通View

关于你的问题。
您可以以编程方式获取ActionBar对象和setBackground 这是简短的例子 ActionBar bar = getActionBar(); bar.setBackgroundDrawable(new ColorDrawable("COLOR IN HEX 0xFFFF6666 for instance"));

我将展示如何实现这一点。这更多是关于架构和模式。

Fragment使用一些基类,最好还有Activity的基类。让我们考虑一下

public class BaseFragment extends Fragment

你片段所在的Activity课程。

public class MainActivity extends Activity

在这种情况下,您必须定义Activity的职责并创建接口

在您的情况下使用ActionBar

创建界面

public interface ActionBarProvider {
  void setActionBarColor(ColorDrawable color);
}

让您的活动实现此界面

public class MainActivity extends Activity implements ActionBarProvider {
    public void setActionBarColo(ColorDrawable color) {
      ActionBar bar = getActionBar();
      bar.setBackgroundDrawable(color));
    }
}

最后在BaseFragment

onAttach
public void onAttach(Context context) {
        super.onAttach(context);
        mActionBarProvider = (ActionBarProvider) context;
}

使mActionBarProvider变量受到保护,并使每个片段扩展BaseFragment,您可以更改此mActionBarProvider.setActionBarColor(new ColorDrawable());

之类的任何片段的操作栏颜色

希望这有帮助。

答案 1 :(得分:1)

我用这个解决方案解决了我的问题:

http://www.materialup.com/posts/pager-sliding-tab-strip