androidmenu的屬性
⑴ android menu屬性
這是監聽手機上的主菜單文件的,點擊手機菜單鍵,會彈出一個菜單,1代表第一行命令,點擊就是推出程序,點擊第二個就是彈出軟體的介紹。
⑵ android menu動態怎麼增加功能
從menu按鍵開始,涉及以下3個方法:
1、onCreateOptionsMenu(Menu menu)
2、onPrepareOptionsMenu(Menu menu)
3、onOptionsItemSelected(MenuItem item)
方法名
觸發時間
onCreateOptionsMenu
進入Launcher後第一次點MENU按鈕時觸發
onPrepareOptionsMenu
有兩種情況:1、進入Launcher後第一次點MENU按鈕觸發onCreateOptionsMenu後調用;2、經過第一步,以後每次點MENU按鈕時都會觸發
onOptionsItemSelected
選擇MENU裡面的任意內容後觸發
⑶ 怎樣在Android Menu item中使用自定義View
1.自定義屬性:attrs.xml
2.MenuItemView.java源碼:
package com.dandy.widget;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.StateListDrawable;
import android.graphics.drawable.shapes.RectShape;
import android.os.Build;
import android.os.Handler;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.View;
import com.lingyun.switchbutton.R;
/**
* 設置,菜單中的布局項
* 默認控制項是縱向居中顯示,所有paddingTop和paddingBottom在這沒有作用
* Created by dandy on 2016/4/14.
*/
public class MenuItemView extends View{
private static final String TAG = "MenuItemView";
/**默認是按下狀態的最小值**/
private static final long PRESSED_TIMEOUT = 10;
/**默認控制項距離邊界的大小**/
private static final int PADDING_DEFAULT = 18;
/**默認控制項的高**/
private static final int HEIGHT_DEFAULT = 50;
/**文字繪制時默認大小**/
private static final int TEXTSZIE_DEFAULT = 14;
/**尾部箭頭圖標大小**/
private static final int ARROW_SIZE = 13;
/***SwitchButton默認寬*/
private static final int SWITCHBUTTON_WIDTH = 50;
/***SwitchButton默認高*/
private static final int SWITCHBUTTON_HEIGHT = 28;
/**頭標**/
private Drawable headerDrawable;
/**頭標寬**/
private int headerDrawableWidth;
/**頭標高**/
private int headerDrawableHeight;
/**距離左邊緣的距離**/
private int paddingLeft;
/**距離右邊緣的距離**/
private int paddingRight;
/**繪制頭標時,畫布在Y軸的繪制偏移量**/
private float headerDrawableStartDrawY;
/**文字與圖片間的距離**/
private int drawablePadding = -1;
/**頭部文字提示**/
private String textHeader;
/**文字顏色**/
private int textHeaderColor = Color.parseColor("#5a5a5a");
/**文字大小**/
private int textSize = -1;
/**文字繪制時,畫布在Y軸的繪制偏移量**/
private float textStartDrawY;
/**繪制文字的畫筆**/
private Paint textPaint;
/** 尾部 > 圖片**/
private Drawable arrowDrawable;
/**尾部 > 大小**/
private int arrowSize = -1;
/** > 繪制的X軸偏移量**/
private float arrowStartDrawX;
/** > 繪制的Y軸偏移量**/
private float arrowStartDrawY;
/**footerDrawable != null 時,繪制的時候是否按照原圖片大小繪制**/
private boolean arrowWropToSelf = true;
/**尾部寬**/
private int arrowDrawableWidth;
/**尾部高**/
private int arrowDrawableHeight;
/**繪制arrow畫筆**/
private Paint arrowPaint;
/**arrowPaint 顏色**/
private int arrowColor = Color.parseColor("#5a5a5a");
private DisplayMetrics dm;
/*以下是繪制SwitchButton所用到的參數*/
private Style style = Style.CUSTOM_ITEM;
/**默認寬**/
private int switchButtonWidth = -1;
/**默認高**/
private int switchButtonHeight = -1;
private static final long DELAYDURATION = 10;
/**開啟顏色**/
private int onColor = Color.parseColor("#4ebb7f");
/**關閉顏色**/
private int offColor = Color.parseColor("#dadbda");
/**灰色帶顏色**/
private int areaColor = Color.parseColor("#dadbda");
/**手柄顏色**/
private int handlerColor = Color.parseColor("#ffffff");
/**邊框顏色**/
private int borderColor = offColor;
/**開關狀態**/
private boolean toggleOn = false;
/**邊框寬**/
private int borderWidth = 2;
/**縱軸中心**/
private float centerY;
/**按鈕水平方向開始、結束的位置**/
private float startX,endX;
/**手柄x軸方向最小、最大值**/
private float handlerMinX,handlerMaxX;
/**手柄大小**/
private int handlerSize;
/**手柄在x軸的坐標位置**/
private float handlerX;
/**關閉時內部灰色帶寬度**/
private float areaWidth;
/**是否使用動畫效果**/
private boolean animate = true;
/**是否默認處於打開狀態**/
private boolean defaultOn = true;
/**按鈕半徑**/
private float radius;
/**整個switchButton的區域**/
private RectF switchRectF = new RectF();
/**繪制switchButton的畫筆**/
private Paint switchPaint;
private OnToggleChangedListener mListener;
private Handler mHandler = new Handler();
private double currentDelay;
private float downX = 0;
/**switchButton在X軸繪制的偏移量**/
private float switchButtonDrawStartX;
/**switchButton在Y軸繪制的偏移量**/
private float switchButtonDrawStartY;
/**分割線,默認在底部繪制**/
private Drawable dividerr;
/**分割線繪制的寬**/
private int dividerWidth = 2;
/**是否需要繪制分割線**/
private boolean dividerVisibilty = true;
/**觸摸事件是否完成**/
private boolean touchDownEnd = false;
public MenuItemView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setup(attrs);
}
public MenuItemView(Context context, AttributeSet attrs) {
super(context, attrs);
setup(attrs);
}
/**
* 初始化控制項,獲取相關的控制項屬性
* @param attrs
*/
private void setup(AttributeSet attrs){
dm = Resources.getSystem().getDisplayMetrics();
TypedArray typedArray = getContext().obtainStyledAttributes(attrs, R.styleable.MenuItemView);
if(typedArray != null){
int count = typedArray.getIndexCount();
for(int i = 0;i < count;i++){
int attr = typedArray.getIndex(i);
switch (attr){
case R.styleable.MenuItemView_headerDrawable:
headerDrawable = typedArray.getDrawable(attr);
break;
case R.styleable.MenuItemView_drawPadding:
drawablePadding = typedArray.getDimensionPixelSize(attr,drawablePadding);
break;
case R.styleable.MenuItemView_textHeader:
textHeader = typedArray.getString(attr);
break;
case R.styleable.MenuItemView_textHeaderColor:
textHeaderColor = typedArray.getColor(attr, textHeaderColor);
break;
case R.styleable.MenuItemView_textSize:
textSize = typedArray.getDimensionPixelSize(attr, textSize);
break;
case R.styleable.MenuItemView_arrowDrawable:
arrowDrawable = typedArray.getDrawable(attr);
break;
case R.styleable.MenuItemView_arrowSize:
arrowSize = typedArray.getDimensionPixelSize(attr, arrowSize);
break;
case R.styleable.MenuItemView_arrowWropToSelf:
arrowWropToSelf = typedArray.getBoolean(attr, true);
break;
case R.styleable.MenuItemView_arrowColor:
arrowColor = typedArray.getColor(attr, arrowColor);
break;
case R.styleable.MenuItemView_onColor:
onColor = typedArray.getColor(attr, onColor);
break;
case R.styleable.MenuItemView_offColor:
borderColor = offColor = typedArray.getColor(attr,offColor);
break;
case R.styleable.MenuItemView_areaColor:
areaColor = typedArray.getColor(attr, areaColor);
break;
case R.styleable.MenuItemView_handlerColor:
handlerColor = typedArray.getColor(attr, handlerColor);
break;
case R.styleable.MenuItemView_bordeWidth:
borderWidth = typedArray.getColor(attr, borderWidth);
break;
case R.styleable.MenuItemView_animate:
animate = typedArray.getBoolean(attr, animate);
break;
case R.styleable.MenuItemView_defaultOn:
defaultOn = typedArray.getBoolean(attr, defaultOn);
break;
case R.styleable.MenuItemView_Style:
style = Style.getValue(typedArray.getInt(attr, Style.CUSTOM_ITEM.ordinal()));
break;
case R.styleable.MenuItemView_switchButtonWidth:
switchButtonWidth = typedArray.getDimensionPixelOffset(attr, switchButtonWidth);
break;
case R.styleable.MenuItemView_switchButtonHeight:
switchButtonHeight = typedArray.getDimensionPixelOffset(attr, switchButtonHeight);
break;
case R.styleable.MenuItemView_dividerr:
dividerr = typedArray.getDrawable(attr);
break;
case R.styleable.MenuItemView_dividerWidth:
dividerWidth = typedArray.getDimensionPixelOffset(attr,dividerWidth);
break;
case R.styleable.MenuItemView_dividerVisibilty:
dividerVisibilty = typedArray.getBoolean(attr,dividerVisibilty);
break;
}
}
typedArray.recycle();
}
⑷ 如何為自定義的toolbar設置menu
放兩個panel 在窗體上,都設置屬性Dock 為 top , menu 放在上面panel里,toolbar放在下面的panel
Android Menu的文字有兩種設置方式:
在 menu.xml中設置。
在java代碼onCreateOptionsMenu中設置。
以下為示例代碼:
在menu.xml中指定title即可
<item android:id="@+id/menu"
android:title="文字"/>
重載onCreateOptionsMenu(Menu menu)方法,並調用API。
menu.add((int groupId, int itemId, int order, charsequence title) .setIcon(drawable ID)
add()方法的四個參數,依次是:
1、組別,如果不分組的話就寫Menu.NONE。
2、Id,這個很重要,Android根據這個Id來確定不同的菜單 。
3、順序,哪個菜單項在前面由這個參數的大小決定 。
4、文本,菜單項的顯示文本。
⑸ 求教android的menu菜單項,謝謝了
/**
* Add a new item to the menu. This item displays the given title for its
* label.
*
* @param groupId The group identifier that this item should be part of.
* This can be used to define groups of items for batch state
* changes. Normally use {@link #NONE} if an item should not be in a
* group.
* @param itemId Unique item ID. Use {@link #NONE} if you do not need a
* unique ID.
* @param order The order for the item. Use {@link #NONE} if you do not care
* about the order. See {@link MenuItem#getOrder()}.
* @param title The text to display for the item.
* @return The newly added menu item.
*/
public MenuItem add(int groupId, int itemId, int order, CharSequence title);
第二參數是itemId,意思在某個菜單組的序號。
⑹ 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>,我說的不是目錄,你配好了就可以引用啊您說的方法不能解決問題。
⑺ android menu 有什麼用
android 中的menu一般是指上下文菜單或者是選項菜單 其中上選項菜單是可以在布局中res下的menu中在xml布局中寫好布局來的然後通過java代碼中的onCreateOptionsMenu來載入選項菜單,android4.4高級版本後是自動把菜單載入到標題欄上的,而不是低版本的按下menu鍵才顯是出來的,上下文菜單是是通過onCreateContextMenu這個方法來注冊上下文菜單的 下面講講如何獲取menu中的item 獲取上下文菜單的item其實就是當單機選項菜單時會觸發這個方法 public boolean onContextItemSelected(MenuItem mi){ //判斷單擊的是哪個菜單項,並針對性的作出響應。 switch (mi.getItemId()){ case FONT_RED: title.setTextColor(Color.RED); break; case FONT_GREEN: title.setTextColor(Color.GREEN); break; case FONT_BLUE: title.setTextColor(Color.BLUE); break; case MENU1: createdialog(); break; } return true; }獲取選項菜單的item其實就是當單擊選項菜單時會觸發這個方法 public boolean onMenuItemSelected(int featureId, MenuItem item) { // 利用switch根據ItemId區分點擊的是哪個菜單 以便正確響應用戶操作 MenuItem temp= item; switch (item.getItemId()) { case R.id.rename: createdialog(); break; case R.id.red: title.setTextColor(Color.RED); break; case R.id.green: title.setTextColor(Color.GREEN); break; case R.id.blue: title.setTextColor(Color.BLUE); break; // case R.id.choose_color: // createpopupmenu(temp); // break; } return super.onMenuItemSelected(featureId, item); }
⑻ android的這些屬性是什麼意思啊求詳解
這些都是OptionsMenu的屬性
ifRoom表示如果Actionbar上有空間,就顯示這個menu;withText表示顯示的時候如果空間足夠,會顯示menu的title。
actionViewClass="android.widget.SearchView"表示這個菜單使用SearchView這個控制項。
⑼ android menu問題
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_back);
return true;
}
⑽ android中的菜單menu可以在屏幕上一直顯示嗎
不可以,menu是需要觸發了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.main.xml
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextViewandroid: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,菜單則不會顯示。
(Menumenu)
@Override
(Menumenu){
/*
*
*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);
returntrue;
}
3。為菜單項注冊事件
使用onOptionsItemSelected(MenuItem item)方法為菜單項注冊事件
(MenuItemitem)
@Override
(MenuItemitem){
switch(item.getItemId()){
caseMenu.FIRST+1:
Toast.makeText(this,"刪除菜單被點擊了",Toast.LENGTH_LONG).show();
break;
caseMenu.FIRST+2:
Toast.makeText(this,"保存菜單被點擊了",Toast.LENGTH_LONG).show();
break;
caseMenu.FIRST+3:
Toast.makeText(this,"幫助菜單被點擊了",Toast.LENGTH_LONG).show();
break;
caseMenu.FIRST+4:
Toast.makeText(this,"添加菜單被點擊了",Toast.LENGTH_LONG).show();
break;
caseMenu.FIRST+5:
Toast.makeText(this,"詳細菜單被點擊了",Toast.LENGTH_LONG).show();
break;
caseMenu.FIRST+6:
Toast.makeText(this,"發送菜單被點擊了",Toast.LENGTH_LONG).show();
break;
}
returnfalse;
}
4.完整代碼
packagecom.android.menu;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.widget.Toast;
{
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
(Menumenu){
/*
*
*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);
returntrue;
}
@Override
(MenuItemitem){
switch(item.getItemId()){
caseMenu.FIRST+1:
Toast.makeText(this,"刪除菜單被點擊了",Toast.LENGTH_LONG).show();
break;
caseMenu.FIRST+2:
Toast.makeText(this,"保存菜單被點擊了",Toast.LENGTH_LONG).show();
break;
caseMenu.FIRST+3:
Toast.makeText(this,"幫助菜單被點擊了",Toast.LENGTH_LONG).show();
break;
caseMenu.FIRST+4:
Toast.makeText(this,"添加菜單被點擊了",Toast.LENGTH_LONG).show();
break;
caseMenu.FIRST+5:
Toast.makeText(this,"詳細菜單被點擊了",Toast.LENGTH_LONG).show();
break;
caseMenu.FIRST+6:
Toast.makeText(this,"發送菜單被點擊了",Toast.LENGTH_LONG).show();
break;
}
returnfalse;
}
@Override
publicvoidonOptionsMenuClosed(Menumenu){
Toast.makeText(this,"選項菜單關閉了",Toast.LENGTH_LONG).show();
}
@Override
(Menumenu){
Toast.makeText(this,
"選項菜單顯示之前onPrepareOptionsMenu方法會被調用,你可以用此方法來根據打當時的情況調整菜單",
Toast.LENGTH_LONG).show();
//如果返回false,此方法就把用戶點擊menu的動作給消費了,onCreateOptionsMenu方法將不會被調用
returntrue;
}
}
5.運行效果