使用BottomNavigationView和没有Theme.AppCompat

时间:2017-07-31 22:31:57

标签: android android-appcompat bottomnavigationview

我需要使用主题

android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"

在有

的活动中
android.support.design.widget.BottomNavigationView

但每次运行应用程序时都会崩溃,因为BottomNavigationView需要Theme.AppCompat。我该如何解决这个问题?

我的宣言:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="tfdev.avventuratestuale">

    <application
        android:name=".Main.MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen">
    <activity android:name=".Main.Main.menu_principale"
            android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Main.Main.scene_manager"
            android:theme="@style/Theme.AppCompat"
            ></activity>
    </application>

</manifest>

BottomNavigationView活动:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@layout/main_background">

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/colorPrimary"
        app:itemIconTint="#FFFFFF"
        app:itemTextColor="#FFFFFF"
        app:menu="@menu/bottom_navigation_main" />

</RelativeLayout>

BottomNavigation活动:

public class scene_manager extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
        setContentView(R.layout.activity_scene_manager);



    }

3 个答案:

答案 0 :(得分:1)

即使我不知道你为什么要做这样的事情,你当然可以使用BottomNavigationView和Holo主题。

首先:不仅BottomNavigationView而且AppCompatActivity扩展的Activity都需要AppCompat主题。按照您需要更改的内容来完成这项工作:

1 - 从Activity而不是AppCompatActivity扩展

public class scene_manager extends Activity {
    // ....
}

注意: Java中的类名不应该使用snake_case但是使用upper camelCase

2 - 直接将AppCompat主题应用于BottomNavigationView

<RelativeLayout ... >

    <android.support.design.widget.BottomNavigationView
        ...
        android:theme="@style/Theme.AppCompat"
    />

</RelativeLayout>

通过这种方式,它可以使用,但您将使用某些功能,例如Toolbar,因为您没有扩展AppCompatActivity。

答案 1 :(得分:0)

你不能。 BottomNavigationView要求您使用AppCompat主题。

一种可能性是使用复制所需功能的第三方库(而不是使用Google视图)。

答案 2 :(得分:0)

我已经修复了

requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

在所有活动中