2015-02-09 78 views
6

我正在使用'AppCompact'庫,並面臨佈局/定位中的一些問題。我想在「ActionBar」的右側放置App圖標。一種方法是在工具欄中定義一個按鈕,但是有沒有一種標準的方法來設置ActionBar右側的App圖標和Up按鈕?在活動工具欄右側設置應用程序圖標

enter image description here

,你可以在上面的圖片中看到,該圖標位於左側,我希望它是在右邊。任何幫助,將不勝感激。

PS:對於誰可能面臨我的問題,它可以很容易地使用此代碼 固定添加該代碼來體現人:

<application android:supportsRtl="true"> 

,然後寫在OnCreate中此代碼:

getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 
+0

@ShabbirDhangot所以它似乎最簡單的方法是在工具欄中定義一個costomized項目?有什麼方法可以隱藏應用程序圖標?或者將其工具欄佈局設置爲從右到左? – 2015-02-09 11:39:19

+0

我建議你去創建與佈局標題和調整您的意見。隱藏當前的操作欄。此外,如果你不這樣做,你可以使用風格隱藏操作欄標誌。這裏描述http://stackoverflow.com/questions/14606294/remove-icon-logo-from-action-bar-on-android – 2015-02-09 11:43:17

+0

優秀,它爲我工作。 – 2016-03-15 19:29:03

回答

13

有沒有辦法android提供設置應用程序圖標在右側的操作欄,但你仍然可以做到這一點

創建一個菜單,說main_menu.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"> 

    <item android:id="@+id/menu_item" 
     android:icon="@drawable/your_app_icon" 
     android:title="@string/menu_item" 
     app:showAsAction="always"/> //set showAsAction always 
            //and this should be the only menu item with show as action always 

</menu> 

現在只需覆蓋onCreateOptionsMenu在活動類。

MainActivity.java

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 

    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

它的完成添加此!您的應用程序圖標現在將顯示在ActionBar的右側。

如果你有一個以上的項目更然後覆蓋onPrepareOptionsMenu菜單在活動類和其應用程序圖標的菜單項,這樣設置setEnabled(false)可以防止您的圖標點擊。現在

@Override 
public boolean onPrepareOptionsMenu(Menu menu){ 
    menu.findItem(R.id.menu_item).setEnabled(false); 

    return super.onPrepareOptionsMenu(menu); 
} 

MainActivity.java文件看起來像

@Override 
public boolean onCreateOptionsMenu(Menu menu){ 

    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item){ 

    switch(item.getItemId()){ 
     case R.id.menu_item: //this item has your app icon 
      return true; 

     case R.id.menu_item2: //other menu items if you have any 
      //add any action here 
      return true; 

     case ... //do for all other menu items 

     default: return super.onOptionsItemSelected(item); 
    } 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu){ 
    menu.findItem(R.id.menu_item).setEnabled(false); 

    return super.onPrepareOptionsMenu(menu); 
} 

這是只有技巧可以用來設置在右側的應用程序圖標。

+0

謝謝你的幫助..我找到了另一種方法,我更新了我的問答。你認爲我使用的方法是錯誤的嗎?謝謝 – 2015-02-09 17:38:58

+0

@MajidHojati屬性'supportsRtl'在api級別17中添加,所以它不適用於api <17。只有當你的'minSdkVersion'是17時才使用它。來源:http://developer.android.com/guide /topics/manifest/application-element.html#supportsrtl – Apurva 2015-02-09 17:48:33

+0

感謝您的幫助。現在我發現它是如何工作的 – 2015-02-09 18:29:59

1

除了將佈局設置爲RTL或自己實現之外,沒有別的辦法。即使您將子類Toolbar並嘗試更改onLayout,您也需要重新計算所有視圖的位置。

相關問題