定义字符的文件,文件路径:res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">yun.demo.popmenu</string> <string name="download">下载</string> <string name="delete">删除</string> <string name="rename">重命名</string> <string name="move">移动</string> </resources>
定义item的文件,文件路径:res/menu/select_item.xml
select_item.xml <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/download" android:orderInCategory="100" android:showAsAction="never" android:title="@string/download"/> <item android:id="@+id/delete" android:orderInCategory="100" android:showAsAction="never" android:title="@string/delete"/> <item android:id="@+id/rename" android:orderInCategory="100" android:showAsAction="never" android:title="@string/rename"/> <item android:id="@+id/move" android:orderInCategory="100" android:showAsAction="never" android:title="@string/move"/> </menu>
主体代码
public class NewFileManager extends ListActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.browsefilelist); onLongClick(); } private void onLongClick() { //响应长按事件 getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { public boolean onItemLongClick(AdapterView parent, View view, int position,long id) { onPopupButtonClick(view); return true; } }); } private Button mButton = null; PopupMenu popup = null; public void onPopupButtonClick(View button) { popup = new PopupMenu(NewFileManager.this,button); getMenuInflater().inflate(R.menu.select_item, popup.getMenu()); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if(item.getItemId() == R.id.move) showDialog_Layout(NewFileManager.this); else Toast.makeText(NewFileManager.this, "按下了"+item.getTitle(), Toast.LENGTH_SHORT).show(); return true; } }); popup.show(); } //显示基于Layout的AlertDialog private void showDialog_Layout(Context context) { LayoutInflater inflater = LayoutInflater.from(this); final View textEntryView = inflater.inflate( R.layout.layout_alertdialog_mkdir, null); final EditText edtInput=(EditText)textEntryView.findViewById(R.id.edtInput); final AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setCancelable(false); builder.setIcon(R.drawable.ic_launcher); builder.setTitle("Title"); builder.setView(textEntryView); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Toast.makeText(NewFileManager.this, "新建文件夹"+edtInput.getText(), Toast.LENGTH_SHORT).show(); setTitle(edtInput.getText()); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle(""); } }); builder.show(); } }
自定义alertdialog布局文件:
res/layout/layout_alertdialog_mkdir.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <EditText android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:textAppearance="?android:attr/textAppearanceMedium" android:id="@+id/edtInput"/> </LinearLayout>