设置AlertDialog的列表样式

    虽然谷歌的sdk已经给大家提供了诸多的接口去实现大家想要的界面,但是时常我们还是因为客户的需求,来对界面进行相应的修改,以更加适合业务的需要。

    在进行android界面设计的时候,我在使用AlertDialog进行弹出框的列表选择的时候,发现本来可以一屏显示的列表,因为谷歌自定义的列表样式,出现了滚动条,客户希望一屏就能显示。

    第一想到的就是重写AlertDialog的,然后再重新实现布局,但是觉得这样又需要去重写列表选择的功能,考虑到这样一个小的客户需求,重新去重新这么多的代码,实在得不偿失,就开始考虑其它的方法。

    最后通过查阅资料,发现可以调用setAdapter,在adapter中指定给item指定一个xml布局文件,然后在布局xml文件中定义相关样式。这样就可以轻松去设置每个Item的高度了和相关的样式了。

布局文件如下

 

  
  
  
  
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <TextView xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@android:id/text1" 
  4.     style="?android:attr/spinnerItemStyle" 
  5.     android:singleLine="true" 
  6.     android:layout_width="fill_parent" 
  7.     android:layout_height="40dp" 
  8.     android:gravity="center_vertical" 
  9.     android:ellipsize="marquee" /> 

然后直接通过setAdapter()方法去调用即可,不再需要调用setItems();

调用代码如下

 

  
  
  
  
  1. spinner_handle = (Button) findViewById(R.id.method_result); 
  2.         spinner_handle.setOnClickListener(new View.OnClickListener() { 
  3.              
  4.             @Override 
  5.             public void onClick(View v) { 
  6.                 // TODO Auto-generated method stub 
  7.                 new AlertDialog.Builder(context) 
  8.                 .setTitle("请选择处理结果") 
  9.                 .setAdapter(new ArrayAdapter(MaintainBillActivity.this,R.layout.result_spinner_layout,handle_items) ,new DialogInterface.OnClickListener() {//调用适配器 
  10.                      
  11.                     @Override 
  12.                     public void onClick(DialogInterface dialog, int which) { 
  13.                         // TODO Auto-generated method stub 
  14.                         handle_method_result=handle_items[which]; 
  15.                         spinner_handle.setText(handle_method_result); 
  16.                     } 
  17.                 }) 
  18.                 .create().show(); 
  19.                  
  20.                  
  21.             } 
  22.         }); 

原图,列表项太宽,出现流动条

 

原图

上传一下列表的效果图片

 

 

你可能感兴趣的:(android,AlertDialog列表样式,重写对话框样式)