2016-08-13 284 views
0

我很親密。我有Android工作室項目與libs正確設置,項目編譯,模擬器和設備運行應用程序。我試圖擺脫舊設備的底部按鈕彈出式菜單,並用v7 appcompat工具欄替換。舊的操作欄消失了,但菜單膨脹仍舊膨脹到舊的彈出菜單。 我開始使用splashscreen,然後app main顯示數據庫視圖活動。這意味着我必須動態加載工具欄。 現在我的思考是我剩下的唯一工作就是風格/主題或setcontent(this)的順序來顯示主應用程序/數據庫視圖屏幕。 另外我沒有HTC evo設備的正確模擬器,所以設備按鈕不顯示。我相信這就是很多開發者發佈工具欄不顯示的原因。當我在真實設備上安裝apk時,我可以使用菜單按鈕。這是我能夠看到菜單不在工具欄中的方式。模擬器顯示沒有按鈕,沒有工具欄,所以開發人員在新設備的模擬器上永遠不會看到這一點。 我希望這足以讓任何人在這裏發現我的陷阱。 在此先感謝。 下面是代碼片段:v7小部件工具欄沒有顯示,爲什麼?

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"; 
+0

其中定義TableMainLayout類? – USKMobility

+0

@USKMobility,它是在一個java文件中動態完成的 –

+0

添加您的TableMainLayout類代碼 – USKMobility

回答

0

試試這個:

<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>

我希望這有助於!

+0

菜單仍然顯示在按鈕菜單上。工具欄仍然不顯示。 –

+0

我做這些也:<項目名稱= 「windowActionModeOverlay」>真 <項目名稱= 「windowActionBar」>假 //看到這一行 <項目名= 「機器人:windowNoTitle」>真 –

+0

它像老操作欄菜單切換到新的工具欄菜單不起作用。 –

1

讓您Toolbar佈局像thie:

<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); 

希望工程。

+0

我只是做了這個,並沒有出現工具欄。 –

+0

@PaulMoore,我編輯了我的答案,希望它有效:) –

+0

我在此之前刪除佈局代碼嗎? –

1

我有可能的答案:你剛剛獲得之前的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)); 

希望這將有助於你

相關問題