可以与动作栏和tabLayout一起使用的主题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可以与动作栏和tabLayout一起使用的主题相关的知识,希望对你有一定的参考价值。

我需要一个帮助才能找到适合我项目这一部分的主题,但首先我相信很高兴首先解释活动的结构以找到答案:

Example of project style

  • 主要活动(左)没有任何Action Bar,因为从屏幕和Action Bar占用了很多空间,污染了设计并且在这一点上没用。
  • 主要活动,取决于用户的选项,可以转到另外两个活动,但它们都是一个与Action Bar相同的正确活动(不等于......只是解释。)的活动。在结果文本的顶部,一个按钮后退,一个带有一些信息的固定部分,以及一个带有3个标签的标签布局,每个标签都是一个片段。

在第二次活动中,问题显然开始了......

我首先按照这个网站建立了屏幕:https://www.androidhive.info/2015/09/android-material-design-working-with-tabs/

但是,通过这个网站,他们使用这种风格:

<style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">

但是使用这种风格,根据我的需要,结果就是这个错误:

 android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class android.support.design.widget.TabLayout

所以,为了找到答案,我发现这个网站在这里:http://geeksmember.blogspot.com.br/2015/10/errorerror-inflating-class.html

谁在样式文件中向我展示了这个解决方案

<style name="AppTheme.Base" parent="android:Theme.Material">

这是一个很好的解决方案,很好,因为在这一刻我可以从其他风格中分离主要风格。好的... buuuuut ...当我启动应用程序时,出现此错误:

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

所以...这是我的问题...因为,当我使用“Theme.AppCompat.Light.DarkActionBar”时,第一个错误又出现了......我仍然坚持这种情况,我找不到一个没有风格的人与我的需求相匹配......

如果有人需要样式文件...(这是除主要活动之外的所有活动的样式文件)

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="AppTheme" parent="AppTheme.Base" />

    <style name="AppTheme.Base" parent="***I Need a theme here, i know, this is my question*** :)">
        <item name="android:colorPrimary">#212121</item>
        <item name="android:colorPrimaryDark">#000000</item>
        <item name="android:colorAccent">#303030</item>
    </style>

    <style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
        <item name="tabIndicatorColor">#80CBC4</item>
    </style>
</resources>
答案

你有两个选择:

为您的两项活动使用不同的主题

为此,您需要创建“操作栏主题”和“无操作栏主题”:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">#212121</item>
    <item name="colorPrimaryDark">#000000</item>
    <item name="colorAccent">#303030</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

然后,在您的清单中,您将第一个主题分配给您的应用,将第二个主题分配给您不想要操作栏的任何屏幕:

<application
    ...
    android:theme="@style/AppTheme">

    <activity
        android:name=".MainActivity"
        android:theme="@style/AppTheme.NoActionBar">

        ...
    </activity>

</application>

因此,默认情况下,所有屏幕都会有一个操作栏,但是任何不应该有操作栏的活动都可以通过为该单个活动指定AppTheme.NoActionBar来设置。

如果需要操作栏,请使用工具栏小部件

对于这种方法,您可以创建您的应用主题,以便没有操作栏:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">#212121</item>
    <item name="colorPrimaryDark">#000000</item>
    <item name="colorAccent">#303030</item>
</style>

然后,在任何应该有操作栏的活动中,您需要在活动的布局中添加Toolbar

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

在您的活动的onCreate()方法中,在设置内容视图后,您将告诉系统将此工具栏用作操作栏:

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

以上是关于可以与动作栏和tabLayout一起使用的主题的主要内容,如果未能解决你的问题,请参考以下文章

重磅推出TabLayout高级窗口组件

如何在将 Tablayout 与 viewpager 一起使用时从另一个片段调用 AsyncTask?

Android Material Design-TabLayout的使用

Android 应用中 v21 的导航栏和状态栏颜色(无主题库)

ReactJS Bootstrap 导航栏和路由不能一起工作

如何一起使用底部导航栏和侧边导航栏,我的侧边导航按钮不显示,而是底部导航