ContextMenu可以達到長按某個元件就會出現選單的效果
在res資料夾中新增menu的資料夾
Resource type選擇menu
在menu資料夾中新增menu.xml(menu resource file)
在menu.xml中新增item
例如:
android:id跟android:title是必要的值
android:orderInCategory為item的排序,值越大,排序就在越下面,如果沒有設定這個值,Menu的排序會依照程式碼的排序去排
例如:
1,要在onCreate裡中加上:registerForContextMenu()(註冊可以被長按的元件)
2,覆寫onCreateContextMenu方法(顯現Menu時呼叫)
加上getMenuInflater().inflate(R.menu.menu,menu);
inflate代表灌飽充滿,表示將剛剛建立的menu.xml充進去
3,覆寫onContextItemSelected方法(選項被點選時呼叫)
例如:
我設定當按下選項中的Exit選項後,要結束這個app,所以在onContextItemSelected中加上這個行為的程式碼
執行結果:
Step1 建立menu.xml
在res資料夾中新增menu的資料夾
Resource type選擇menu
在menu資料夾中新增menu.xml(menu resource file)
在menu.xml中新增item
例如:
android:orderInCategory為item的排序,值越大,排序就在越下面,如果沒有設定這個值,Menu的排序會依照程式碼的排序去排
Step2 在layout設定可以被長按的元件id
如果是要長按文字後會跳出Menu的話,就要設定TextView的id例如:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<TextView | |
android:id="@+id/tv" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:text="長按我" /> |
Step3 在Activity.java裡設定長按方法
1,要在onCreate裡中加上:registerForContextMenu()(註冊可以被長按的元件)
2,覆寫onCreateContextMenu方法(顯現Menu時呼叫)
加上getMenuInflater().inflate(R.menu.menu,menu);
inflate代表灌飽充滿,表示將剛剛建立的menu.xml充進去
3,覆寫onContextItemSelected方法(選項被點選時呼叫)
例如:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
tv = (TextView) findViewById(R.id.tv); | |
registerForContextMenu(tv); | |
} | |
@Override | |
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { | |
getMenuInflater().inflate(R.menu.menu,menu); | |
super.onCreateContextMenu(menu, v, menuInfo); | |
} | |
@Override | |
public boolean onContextItemSelected(MenuItem item) { | |
if(item.getItemId() == R.id.opb){ | |
finish(); | |
} | |
return super.onContextItemSelected(item); | |
} |
執行結果:
留言
張貼留言