Android自定义对话框列表

本文介绍如何在Android应用中创建自定义对话框,包括使用AlertDialog.Builder进行构建,并通过SimpleAdapter自定义菜单项的显示方式,以实现更灵活的UI设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习Android,在文件操作时弹出一个对话框作为弹出菜单(习惯叫法  :-)  ):

new AlertDialog.Builder(MyActivity.this)
       .setTitle("标题")
       .setItems(menu,listener)
       .show(); 

 

其中:

menu:

String[] menu={"打开","重命名","删除","复制","剪切","自动重命名"};

 

listener:

OnClickListener listener = new DialogInterface.OnClickListener() {
     @Override
       public void onClick(DialogInterface dialog, int which)
     {

       //TODO 点击项处理 

       } 

}; 

当menu内容多时,一屏显示不下,看了看间隔比较到,字体也比较大,如果修改得小一些就可以在一屏显示了。

 

改造对话框:

 

List<Map<String,String>> filemenu= new ArrayList<Map<String, String>>();
for(int i=0;i<menu.length;i++){
Map<String,String> m=new HashMap<String,String>();
m.put("id",menu[i]);
filemenu.add(m);
}
SimpleAdapter adapter = new SimpleAdapter(FileManager.this,
(List<Map<String,String>>) filemenu, R.layout.popupmenu,
new String[] { "id"}, new int[] {R.id.txtItem});
   new AlertDialog.Builder(FileManager.this)
       .setTitle(R.string.OptionMenuTitle)
       //通过自定义适配器来显示菜单
       .setAdapter(adapter,listener)

       .show(); 

 

其中R.layout.popupmenu:

 <?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="fill_parent">
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="TextView" 
     android:id="@+id/txtItem"
     android:textColor="@color/blue" 
     android:textSize="24sp"
     >
    </TextView>
  <ListView android:id="@id/android:list" android:drawSelectorOnTop="false" android:layout_width="wrap_content" android:layout_height="wrap_content"></ListView>
</LinearLayout>

只需要修改这个xml布局文件就可以修改弹出项的外观了。 

转载于:https://www.cnblogs.com/GarfieldTom/archive/2011/04/20/2022325.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值