现在的位置: 首页 > 综合 > 正文

【android】UI 长按后弹出Menue选择框,选择move后弹出自定义对话框

2018年02月08日 ⁄ 综合 ⁄ 共 3183字 ⁄ 字号 评论关闭

定义字符的文件,文件路径: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>

抱歉!评论已关闭.