1. 程式人生 > >Android中的菜單

Android中的菜單

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中的菜單