雖然兩種方法有很多相似的地方,但是使用的方法不同,廢話不多說,帖方法了
方法一功能簡述
要實現能代替系統選單的自定義選單必須保證以下基本功能的實現:
能通過menu鍵隱藏顯示選單(截獲系統menu鍵動態隱藏顯示)
當獲得焦點時高亮顯示獲得焦點的選單項
實現按下選單狀態效果
能設定選單背景
能設定選單項背景
能設定選單項圖示(icon)
最後當然是最主要的事件處理
詳細實現
1).定義選單布局檔案
1).首先定義advancedbutton.xml,來實現選單項焦點獲得高亮顯示、按下的效果
2).實現選單布局檔案
3).定義靜態方法——用於隱藏/顯示傳過來的選單
public static void setmenuevent(linearlayout layout) else
}4).過載activity類的onkeyup()或onkeydown按鍵事件監聽menu鍵實現選單的隱藏/顯示
@override
public boolean onkeyup(int keycode, keyevent event) else
// }
// isshowmenu = !isshowmenu;
return super.onkeyup(keycode, event);
}然後獲取layout裡的button(選單項)新增事件監聽,實現選單項事件處理。
至此以上提出的選單最基本的7要素便已完成。
下篇文章我將在這基礎上修改完善,使它能實現動態選單項的新增刪除。
方法二首先,寫出自己menu的layout:
<?xml version="1.0" encoding="utf-8"?>
其中android:drawabletop的值是自己定義的乙個selector,這個就自己看著辦了,很簡單。
然後要定義乙個類,繼承自linearlayout:
public class mylinearlayout extends linearlayout
public mylinearlayout(context context, attributeset attrs)
private void setview() else
}重寫乙個方法:
@override
public boolean onkeyup(int keycode, keyevent event)
return super.onkeyup(keycode, event);
}ok了,現在build project就可以執行了。
自定義dialog的兩種方式
介紹自定義對話方塊 dialog 的兩種方式 方式一 首先自定義乙個自己想要設計的對話方塊的介面布局,我的是這樣的 然後在activity類中進行展示,這裡我寫了乙個showinputpwddialog方法 輸入密碼對話方塊 private void showinputpwddialog 方式二 可...
自定義異常的兩種方式
自定義異常的兩種方式 一 丟擲異常 def greet name,city if notisinstance name,str raise typeerror name must be str if notisinstance city,str raise typeerror age must be...
自定義View的兩種方式
一 xib自定義view 1.思路 2.關鍵 1 import23 class45 inte ce67 8 模型資料9 1113 14 15 通過模型資料來建立乙個view 16 1819 end 1 import 2 import 34 inte ce 5 property weak,nonato...