1. android menu背景色怎麼設置
menu中每項都是xml中定義出來的。
可以添加
<item android:id="@+id/happy"
android:title="Happy"
android:icon="@drawable/stat_happy" />
2. android中的menu的背景顏色如何設置請指教
.Factory,但是細節不是太清楚,請指點。 在strings.xml里配下info的顏色,如果是代碼生成的可以用這個menu.add(0, 1, 0, "確定").setIcon(R.drawable.info);不知道這樣是否符合你的要求drawable是圖片的目錄,strings是一些文本的屬性,你說的能具體點嗎? 問題補充:sunquanfeng 寫道引用sunquanfeng 寫道 在strings.xml里配下info的顏色,如果是代碼生成的可以用這個menu.add(0, 1, 0, "確定").setIcon(R.drawable.info);不知道這樣是否符合你的要求 android工程里不是有個strings.xml文件么,裡面是配置資源的,你配一個 <drawable name="info">#0000ff</drawable>,我說的不是目錄,你配好了就可以引用啊您說的方法不能解決問題。
3. 如何使用 SearchView 工具欄中Android
眾所周知,在使用ActionBar的時候,一堆的問題:這個文字能不能定製,位置能不能改變,圖標的間距怎麼控制神馬的,由此暴露出了ActionBar設計的不靈活。為此官方提供了ToolBar,並且提供了supprot library用於向下兼容。Toolbar之所以靈活,是因為它其實就是一個ViewGroup,我們在使用的時候和普通的組件一樣,在布局文件中聲明。
Part1:ToolBar的引入step1:設置style主題,主要任務是去除原本的ActionBar
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"><!--Light.DarkActionBar表示默認的黑色主體的Actionbar-->
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/sky_blue</item>
<item name="colorPrimaryDark">@color/deep_blue</item>
<item name="colorAccent">@color/material_deep_teal_200</item>
<item name="android:textColorPrimary">@color/white</item>
</style>
colorPrimary表示標題欄ActionBar的顏色;colorPrimaryDark表示狀態欄的顏色; colorAccent表示輸入框,按鈕等被選中時的顏色; textColorPrimary表示標題欄(ActionBar或者ToolBar)中字體的顏色
當然啦,第一步的實現也可以在程序代碼中或者style里靜態或者動態地去掉ActionBar
step2:在你需要引入ToolBar的布局文件中引入ToolBar:
<android.support.v7.widget.Toolbar
android:id="@+id/main_toolbar"
android:theme="@style/ThemeOverlay.AppCompat.Dark"//這里的主題可以用來反襯toolBar的overFlow顏色
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/sky_blue"
></android.support.v7.widget.Toolbar>
因為colorPrimary是給ActionBar設定顏色的,因此如果我們使用ToolBar,就需要自己去設定ToolBar的背景顏色
setp3:在代碼中獲取ToolBar控制項以及實例化:
Toolbar toolbar = (Toolbar) findViewById(R.id.main_toolbar);
toolbar.setNavigationIcon(R.mipmap.ic_toc_white_24dp);//設置ToolBar頭部圖標
toolbar.setTitle("ToolBar");//設置標題,也可以在xml中靜態實現
setSupportActionBar(toolbar);//使活動支持ToolBar
Part2:ToolBar里各SearchView的引入:
setp1:在menu/xxxx.xml的菜單布局文件將SearchView以菜單條目的方式加入到ToolBar中
<item
android:id="@+id/action_search"
android:icon="@drawable/ic_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView"
android:inputType="textCapWords"
android:imeOptions="actionSearch"
android:title="search" />
這中添加條目的方式和添加普通控制項的方式是一樣的,這里需要對showAsAction具體說明以下:
ifRoom表示當toolBar空間足夠時,顯示圖標在標題欄中,否則將它隱藏到ToolBar末端的overFlow中,點開overFlow只顯示item的title
CollapseActionView表示當前空間點開之後占據整個ToolBar空間
always表示總是顯示在標題欄中,當我們長按該item後,就會以Toast的方式顯示出它的title
never表示總是隱藏在overFlow中
step2:在Java程序代碼中實例SearchView
覆寫onCreateOptionsMenu方法,為什麼要在這個方法里實現對SearchView的實例化呢?因為toolBar里的點擊事件都以菜單的形式實現的,如果我們需要讓它隱藏到overFlow中,並且點擊菜單鍵並喚出,那麼就只需要把它的顯示方式設置為never即可。
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
MenuItem menuItem = menu.findItem(R.id.action_search);//在菜單中找到對應控制項的item
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
Log.d("Tag", "menu create");
MenuItemCompat.setOnActionExpandListener(menuItem, new MenuItemCompat.OnActionExpandListener() {//設置打開關閉動作監聽
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
Toast.makeText(MainActivity.this, "onExpand", Toast.LENGTH_LONG).show();
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
Toast.makeText(MainActivity.this, "Collapse", Toast.LENGTH_LONG).show();
return true;
}
});
return super.onCreateOptionsMenu(menu);
4. 怎麼讓android系統中隱藏的menu按鈕顯示出來
菜單是用戶界面中最常見的元素之一,使用非常頻繁,在Android中,菜單被分為如下三種,選項菜單(OptionsMenu)、上下文菜單(ContextMenu)和子菜單(SubMenu),以下說的是創建OptionsMenu 一、概述 public boolean onCreateOptionsMenu(Menu menu):使用此方法調用OptionsMenu。 public boolean onOptionsItemSelected(MenuItem item):選中菜單項後發生的動作。 public void onOptionsMenuClosed(Menu menu):菜單關閉後發生的動作。 public boolean onPrepareOptionsMenu(Menu menu):選項菜單顯示之前onPrepareOptionsMenu方法會被調用,你可以用此方法來根據打當時的情況調整菜單。 public boolean onMenuOpened(int featureId, Menu menu):單打開後發生的動作。 二、默認樣式 默認樣式是在屏幕底部彈出一個菜單,這個菜單我們就叫他選項菜單OptionsMenu,一般情況下,選項菜單最多顯示2排每排3個菜單項,這些菜單項有文字有圖標,也被稱作Icon Menus,如果多於6項,從第六項開始會被隱藏,在第六項會出現一個More里,點擊More才出現第六項以及以後的菜單項,這些菜單項也被稱作Expanded Menus。下面介紹。 1/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="請點擊 Menu鍵顯示選項菜單" android:id="@+id/TextView02" /> </LinearLayout> 2。重載onCreateOptionsMenu(Menu menu)方法 重載onCreateOptionsMenu(Menu menu)方法,並在此方法中添加菜單項,最後返回true,如果false,菜單則不會顯示。 public boolean onCreateOptionsMenu(Menu menu) @Override public boolean onCreateOptionsMenu(Menu menu) { /* * * add()方法的四個參數,依次是: * * 1、組別,如果不分組的話就寫Menu.NONE, * * 2、Id,這個很重要,Android根據這個Id來確定不同的菜單 * * 3、順序,那個菜單現在在前面由這個參數的大小決定 * * 4、文本,菜單的顯示文本 */ menu.add(Menu.NONE, Menu.FIRST + 1, 5, "刪除").setIcon( android.R.drawable.ic_menu_delete); // setIcon()方法為菜單設置圖標,這里使用的是系統自帶的圖標,同學們留意一下,以 // android.R開頭的資源是系統提供的,我們自己提供的資源是以R開頭的 menu.add(Menu.NONE, Menu.FIRST + 2, 2, "保存").setIcon( android.R.drawable.ic_menu_edit); menu.add(Menu.NONE, Menu.FIRST + 3, 6, "幫助").setIcon( android.R.drawable.ic_menu_help); menu.add(Menu.NONE, Menu.FIRST + 4, 1, "添加").setIcon( android.R.drawable.ic_menu_add); menu.add(Menu.NONE, Menu.FIRST + 5, 4, "詳細").setIcon( android.R.drawable.ic_menu_info_details); menu.add(Menu.NONE, Menu.FIRST + 6, 3, "發送").setIcon( android.R.drawable.ic_menu_send); return true; } 3。為菜單項注冊事件 使用onOptionsItemSelected(MenuItem item)方法為菜單項注冊事件 public boolean onOptionsItemSelected(MenuItem item) @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case Menu.FIRST + 1: Toast.makeText(this, "刪除菜單被點擊了", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 2: Toast.makeText(this, "保存菜單被點擊了", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 3: Toast.makeText(this, "幫助菜單被點擊了", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 4: Toast.makeText(this, "添加菜單被點擊了", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 5: Toast.makeText(this, "詳細菜單被點擊了", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 6: Toast.makeText(this, "發送菜單被點擊了", Toast.LENGTH_LONG).show(); break; } return false; } 4.完整代碼 package com.android.menu; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; public class DefaultMenu extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu) { /* * * add()方法的四個參數,依次是: * * 1、組別,如果不分組的話就寫Menu.NONE, * * 2、Id,這個很重要,Android根據這個Id來確定不同的菜單 * * 3、順序,那個菜單現在在前面由這個參數的大小決定 * * 4、文本,菜單的顯示文本 */ menu.add(Menu.NONE, Menu.FIRST + 1, 5, "刪除").setIcon( android.R.drawable.ic_menu_delete); // setIcon()方法為菜單設置圖標,這里使用的是系統自帶的圖標,同學們留意一下,以 // android.R開頭的資源是系統提供的,我們自己提供的資源是以R開頭的 menu.add(Menu.NONE, Menu.FIRST + 2, 2, "保存").setIcon( android.R.drawable.ic_menu_edit); menu.add(Menu.NONE, Menu.FIRST + 3, 6, "幫助").setIcon( android.R.drawable.ic_menu_help); menu.add(Menu.NONE, Menu.FIRST + 4, 1, "添加").setIcon( android.R.drawable.ic_menu_add); menu.add(Menu.NONE, Menu.FIRST + 5, 4, "詳細").setIcon( android.R.drawable.ic_menu_info_details); menu.add(Menu.NONE, Menu.FIRST + 6, 3, "發送").setIcon( android.R.drawable.ic_menu_send); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case Menu.FIRST + 1: Toast.makeText(this, "刪除菜單被點擊了", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 2: Toast.makeText(this, "保存菜單被點擊了", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 3: Toast.makeText(this, "幫助菜單被點擊了", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 4: Toast.makeText(this, "添加菜單被點擊了", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 5: Toast.makeText(this, "詳細菜單被點擊了", Toast.LENGTH_LONG).show(); break; case Menu.FIRST + 6: Toast.makeText(this, "發送菜單被點擊了", Toast.LENGTH_LONG).show(); break; } return false; } @Override public void onOptionsMenuClosed(Menu menu) { Toast.makeText(this, "選項菜單關閉了", Toast.LENGTH_LONG).show(); } @Override public boolean onPrepareOptionsMenu(Menu menu) { Toast.makeText(this, "選項菜單顯示之前onPrepareOptionsMenu方法會被調用,你可以用此方法來根據打當時的情況調整菜單", Toast.LENGTH_LONG).show(); // 如果返回false,此方法就把用戶點擊menu的動作給消費了,onCreateOptionsMenu方法將不會被調用 return true; } } 5.運行效果