Android學習之menu菜單使用與用戶自定義View

在eclipse中新建一個安卓項目的時候,一般會自帶創建一個menu,如果想自定義一個menu的話,在項目res目錄下新建一個menu菜單,然後在該目錄下新建一個xml文件,系統根目錄會自動選擇爲menu類型;



新建成功後,我們在xml中添加菜單項Item;

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/add_item"
        android:title="Add"/>
    <item 
        android:id="@+id/remove_item"
        android:title="Remove"
        />
</menu>


回到MainActivity當中,實現菜單創建和菜單選擇方法實現;onCreateOptionsMenu和onOptionsItemSelected;

onCreateOptionsMenu和Activity中的onCreate方法類似,獲取MenuInflater對象,加載menu類型的main.xml視圖文件到menu對象中,這種方法和ListView當中LayoutInflater加載子視圖操作很相似!注意return true,表明菜單被調用後會顯示出來,否則不會顯示;單擊模擬器上menu圖標,菜單就會顯示出來了!默認菜單的樣式與當前安卓版本有關

	//創建菜單
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	
	//選擇菜單
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
			switch (item.getItemId()) {
			case R.id.add_item:
				Toast.makeText(this, "你點擊了添加菜單項按鈕", Toast.LENGTH_SHORT).show();
				break;
			case R.id.remove_item:
				Toast.makeText(this, "你點擊了刪除菜單項按鈕", Toast.LENGTH_SHORT).show();
				break;
			}
		
		return true;
	}




下面看看自定義view,這裏做一個新聞詳情頁的導航條部分,包括返回上一級按鈕,文本標題顯示和回到主頁按鈕;單獨做一個佈局文件title.xml;然後其他佈局中利用include來調用這個導航條佈局,基本上就實現了通用導航條效果!

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/title_bg"
    android:orientation="horizontal" >
    <Button 
        android:id="@+id/title_back"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center"
        android:background="@drawable/title_back"
        
        />
    
    <TextView 
        android:id="@+id/title_text"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="15dp"
        android:layout_weight="1"
        android:singleLine="true"
        android:ellipsize="end"
        android:text="英國加入亞投行,西方國家效仿,美國阻擊戰略失敗"
        android:textColor="#fff"
        
        />
    
     <Button 
        android:id="@+id/title_index"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center"
        android:background="@drawable/title_index"
       
        />

</LinearLayout>


由於涉及到返回鍵,所以在子活動中引入導航條實現按鈕功能,主活動中通過意圖對象進入子活動;子活動中實現導航按鈕功能

完成主活動功能:


主佈局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.menu.MainActivity" >


   <Button 
       android:id="@+id/enter"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:text="進入"
       />

</LinearLayout>

自佈局文件:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
        <include  layout="@layout/title"/>
    
        <TextView 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"
            android:textStyle="normal"
            android:layout_marginTop="15dp"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:lineSpacingExtra="10dp"
            android:text="中國日報網12月11日電(遠達)由中國倡導設立的亞洲基礎設施投資銀行蓄勢待發,不少國家摩拳擦掌、踊躍參與,但也有彷徨徘徊者,有的甚至心生疑忌,視之爲對亞太金融格局的挑戰,認爲亞投行要與世行、亞行分庭抗禮。"
            />
</LinearLayout>


主活動代碼:

package com.example.menu;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{
    private Button enter;
    private Intent intent=null;
	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initView();
	}
	
	private void initView(){
		enter= (Button) findViewById(R.id.enter);
		enter.setOnClickListener(this);
	}
	


	
	
	//創建菜單
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	
	//選擇菜單
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
			switch (item.getItemId()) {
			case R.id.add_item:
				Toast.makeText(this, "你點擊了添加菜單項按鈕", Toast.LENGTH_SHORT).show();
				break;
			case R.id.remove_item:
				Toast.makeText(this, "你點擊了刪除菜單項按鈕", Toast.LENGTH_SHORT).show();
				break;
			}
		
		return true;
	}

	public void onClick(View v) {
		if(v.getId()==R.id.enter){
			Toast.makeText(this, "進入另一個活動", Toast.LENGTH_SHORT).show();
			intent =new Intent(this,SecondActivity.class);
			startActivity(intent);
		}
	}

	

	
}

子活動代碼:


package com.example.menu;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SecondActivity extends Activity implements OnClickListener{
	 Button tittle_back,tittle_index;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);
		initView();
	}
	
	private void initView(){
		tittle_back= (Button) findViewById(R.id.title_back);
		tittle_index=(Button) findViewById(R.id.title_index);
		tittle_back.setOnClickListener(this);
		tittle_index.setOnClickListener(this);
	}
	
	public void onClick(View v) {
		
		switch (v.getId()) {
		case R.id.title_back:
			finish();
			break;
		case R.id.title_index:
			Intent intent =new Intent(this,MainActivity.class);
			startActivity(intent);
			break;
		}
	}

}


效果圖:







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章