v7 小部件工具栏不显示,为什么?

v7 widget toolbar not showing, why?

我很亲近。我使用库正确设置了 android studio 项目,项目编译,模拟器和设备 运行 应用程序。我试图摆脱旧设备的底部按钮弹出菜单并替换为 v7 appcompat 工具栏。旧的操作栏不见了,但菜单膨胀仍然膨胀到旧的弹出菜单。 我开始使用闪屏,然后应用程序主要显示数据库视图 activity。这意味着我必须动态加载工具栏。 我现在的想法是我唯一需要解决的地方是 styles/themes 或 setcontent(this) 显示主 app/database 视图屏幕的顺序。 此外,我没有适用于 HTC evo 设备的正确模拟器,因此设备按钮不显示。我相信这就是为什么很多开发人员 post 工具栏不显示的原因。当我在真实设备上安装 apk 时,我可以使用菜单按钮。这就是我能够看到菜单不在工具栏中的方式。模拟器不显示任何按钮和工具栏,因此使用较新设备的模拟器的开发人员永远不会看到这一点。 我希望这足以让任何人在这里抓住我的陷阱。 提前致谢。 以下是代码片段:

styles.xml:

<resources>
<!--
    Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<!--<style name="AppTheme" parent="AppBaseTheme">-->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">true</item>
    <item name="android:textColor">#000000</item>
</style>
</resources>

Toolbarmenu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
    <item
        android:id="@+id/add"
        android:icon="@android:drawable/ic_menu_add"
        app:showAsAction="ifRoom"
        android:title="@string/app_name"/>
    <item
        android:id="@+id/reset"
        android:icon="@android:drawable/ic_menu_revert"
        app:showAsAction="ifRoom"
        android:title="@string/action_settings"/>
    <item
        android:id="@+id/about"
        android:icon="@android:drawable/ic_dialog_info"
        app:showAsAction="ifRoom"
        android:title="@string/hello_world">
    </item>
    <item
        android:id="@+id/exit"
        app:showAsAction="ifRoom"
        android:title="@string/Menu">
    </item>
</menu>

Manifest.xlm:

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name="com.loadrunner.SplashScreenActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.loadrunner.MainActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
</manifest>

lrtoolbar.xml

        <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:background="#2196f3"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:elevation="4dp"
        android:minHeight="200dp">
    </android.support.v7.widget.Toolbar>

</LinearLayout>

Layout_main.xml:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".SplashScreenActivity"
    android:visibility="visible"
    android:background="@color/black">


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageViewSplashLogo"
        android:src="@drawable/shoppingcartloading"
        android:visibility="visible"
        android:contentDescription="@string/app_name"
        android:scaleType="fitCenter"
        android:cropToPadding="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:background="@color/black" />
  </RelativeLayout>

最后是代码:

import android.app.ActionBar;
import android.app.Activity;

import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.SpinnerAdapter;
import android.widget.Toast;

import com.Table.TableMainLayout;


public class MainActivity extends AppCompatActivity {

    final String TAG = "MainActivity.java";
    public static DatabaseHandler db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Log.d("SplashMainActivityonCre", "made it");
        db = new DatabaseHandler(this);
        db.getWritableDatabase();
        db.insertFast(100);
        int dbreccnt = db.countRecords();
        //Log.d("SplashAfterDBCreate", "made it");
        //Log.d("AppLoadrunner ", "Loadrunner record count " + dbreccnt);

        Toolbar LrToolBar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(LrToolBar);
        //getSupportActionBar().setDisplayShowHomeEnabled(true);
        //LrToolBar.setNavigationContentDescription(getResources().getString(R.string.app_name));
        setContentView(new TableMainLayout(this));

TableMainLayout 开始:

package com.Table;

import android.content.Context;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;
//import android.database.Cursor;

import com.loadrunner.DatabaseHandler;
import com.loadrunner.R;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;


public class TableMainLayout extends RelativeLayout {

    public final String TAG = "TableMainLayout.java";

试试这个:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionModeOverlay">true</item>
    <item name="windowActionBar">false</item> //see this line
    <item name="android:windowNoTitle">true</item>
</style>

尝试设置<item name="windowActionBar">false</item>

希望对您有所帮助!

使您的 Toolbar 布局像这样:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:background="#2196f3"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:elevation="4dp"
    android:minHeight="200dp" />

并在您的 Activity 代码中将 Toolbar LrToolBar = (Toolbar) findViewById(R.id.toolbar); 替换为:

Toolbar toolbar = LayoutInflater.from(this).inflate(R.layout.toolbar_layout_name, null)
setSupportActionBar(toolbar);

希望有用。

我可能有答案:您只需在 setContentView() 方法之前获取工具栏... 试试这个:

    setContentView(new TableMainLayout(this));
    Toolbar LrToolBar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(LrToolBar);
    //getSupportActionBar().setDisplayShowHomeEnabled(true);
    //LrToolBar.setNavigationContentDescription(getResources().getString(R.string.app_name));

希望对您有所帮助