由于本人在项目中遇到一个这样一个需求,页面显示menu菜单,且菜单有默认背景和选中背景,而且还是一行4个项目,系统默认是一行3个项目,故放弃使用menu控件,采用布局,定义好4个功能按钮,但用户按下menu键时显示,再按时隐藏
以下是我的代码
Activity01.java
package mars.listview;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SimpleAdapter;
public class Activity01 extends ListActivity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
for (int i = 0; i <= 20; i++) {
HashMap<String, String> map1 = new HashMap<String, String>();
map1.put("user_name", "zhangsan"+i);
map1.put("user_ip", "192.168.0.1"+i);
list.add(map1);
}
SimpleAdapter listAdapter = new SimpleAdapter(this, list,
R.layout.user, new String[] { "user_name", "user_ip" },
new int[] { R.id.user_name, R.id.user_ip });
setListAdapter(listAdapter);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == event.KEYCODE_MENU) {
RelativeLayout ly2 = (RelativeLayout)this.findViewById(R.id.listLinearLayout2);
if(View.VISIBLE==ly2.getVisibility()){
ly2.setVisibility(View.GONE);
LinearLayout ly = (LinearLayout)this.findViewById(R.id.listLinearLayout);
LinearLayout.LayoutParams Scrollparams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
Scrollparams.width = LinearLayout.LayoutParams.FILL_PARENT;
Scrollparams.height = LinearLayout.LayoutParams.FILL_PARENT;
Scrollparams.topMargin = 0;
Scrollparams.bottomMargin = 0;
ly.setLayoutParams(Scrollparams);
}else{
LinearLayout ly = (LinearLayout)this.findViewById(R.id.listLinearLayout);
LinearLayout.LayoutParams Scrollparams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
Scrollparams.width = LinearLayout.LayoutParams.FILL_PARENT;
Scrollparams.height = 350;
Scrollparams.topMargin = 0;
Scrollparams.bottomMargin = 0;
ly.setLayoutParams(Scrollparams);
ly2.setVisibility(View.VISIBLE);
}
}
return super.onKeyDown(keyCode, event);
}
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
System.out.println("id----------------" + id);
System.out.println("position----------" + position);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:id="@+id/listLinearLayout"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical">
<ListView android:id="@id/android:list" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:drawSelectorOnTop="false"
android:scrollbars="vertical" />
</LinearLayout>
<RelativeLayout android:id="@+id/listLinearLayout2"
android:layout_width="fill_parent" android:layout_height="50px"
android:background="#ffffff"
android:visibility="gone"
android:orientation="vertical">
</RelativeLayout>
</LinearLayout>