Android中的菜單
阿新 • • 發佈:2018-10-16
return add lec fff find setting class urn 添加菜單
***Android中的菜單
*OptionsMenu:
onCreatOptiodMenu()方法
首先在menu文件夾下創建options_menu.xml文件:
<item
android:id="@+id/action_search"
android:title="@string/action_search"/>
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"/>
MainActivity.java中:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //創建選項菜單--OptionsMenu @Override public boolean onCreateOptionsMenu(Menu menu) { //獲取菜單填充器對象 MenuInflater menuinflater = getMenuInflater(); //將menu的xml文件轉換成menu對象 menuinflater.inflate(R.menu.options_menu, menu); //也可以通過代碼形式添加菜單項 menu.add(Menu.NONE, Menu.NONE,Menu.NONE, "掃描"); //返回必須是true,否則不顯示menu return true; } //處理OptionMenu的點擊事件 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_search: Toast.makeText(MainActivity.this, "搜索", Toast.LENGTH_SHORT).show(); break; case R.id.action_settings: Toast.makeText(MainActivity.this, "設置", Toast.LENGTH_SHORT).show(); default: break; } return super.onOptionsItemSelected(item); } }
*ContextMenu:
onCreatContextMenu()方法
案例效果:需長按textview控件才可顯示出菜單,通過選擇相應的菜單項,在title中顯示控件寬高
在activity_main.xml布局文件中添加一個textView控件,values文件夾下的main.xml文件中:
<item android:id="@+id/action_height" android:title="@string/action_height"/> <item android:id="@+id/action_width" android:title="@string/action_width"/>
MainActivity.java中:
public class MainActivity extends Activity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); registerForContextMenu(tv);//必須註冊上下文菜單-->通常上下文菜單是和ListView或者GridView這種適配器控件綁定在一起 } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { MenuInflater menuinflater = getMenuInflater(); menuinflater.inflate(R.menu.main, menu); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_height: setTitle("控件的高度="+tv.getHeight()); break; case R.id.action_width: setTitle("控件的寬度="+tv.getWidth()); default: break; } return super.onContextItemSelected(item); } }
*PopupMenu:
PopupMenu popMenu = new PopupMenu(this,v)
案例顯示效果:通過點擊button按鈕顯示出菜單選項,通過選擇相應的菜單選項設置textview中字體的增大和減小
activity_main.xml中布局:
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="showPopup"
android:textColor="#fff"
android:background="#90C552"
android:text="顯示PopupMenu"/>
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/hello_world" />
menu文件夾下的main.xml中設置菜單選項:
<item
android:id="@+id/action_textadd"
android:title="@string/action_textadd"/>
<item
android:id="@+id/action_textsub"
android:title="@string/action_textsub"/>
MainActivity.java文件中:
public class MainActivity extends Activity {
private float fontSize =15.0f;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
}
public void showPopup(View view){
PopupMenu popupmenu = new PopupMenu(this, view);//第二個參數anchor:錨點,popupmenu想要顯示出來必須與一個控件綁定在一起,所以這裏將其與view綁定,view也就是button
getMenuInflater().inflate(R.menu.main, popupmenu.getMenu());
popupmenu.show();
//處理菜單選項點擊事件
popupmenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_textadd:
fontSize+=5;
break;
case R.id.action_textsub:
fontSize-=5;
default:
break;
}
tv.setTextSize(fontSize);
return false;
}
});
}
}
Android中的菜單