1. 程式人生 > >android 彈出選擇框,簡單通用彈出選擇框

android 彈出選擇框,簡單通用彈出選擇框


LinearLayout ll =(LinearLayout)getActivity().findViewById(R.id.log_sel_qyport);
		ll.setOnClickListener(new View.OnClickListener() {

	            public void onClick(View v) {
	            	ShowChoise();    	
	            }
	    });

	private void ShowChoise()
	{
		
		AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),android.R.style.Theme_Holo_Light_Dialog);
        //builder.setIcon(R.drawable.ic_launcher);
        builder.setTitle("選擇一個城市");
        //    指定下拉列表的顯示資料
        final String[] cities = {"廣州", "上海", "北京", "香港", "澳門"};
        //    設定一個下拉的列表選擇項
        builder.setItems(cities, new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {
                Toast.makeText(getActivity(), "選擇的城市為:" + cities[which], Toast.LENGTH_SHORT).show();
            }
        });
        builder.show();
	}

android 彈出選擇框預設是顯示的是黑底白字,如果要改為白底黑字則例項化的時候指定下風格

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),android.R.style.Theme_Holo_Light_Dialog);

但是修改成白底黑字後可能會出現多出來背景的問題可以使用把背景設定成透明色解決

方法1:   r_dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

 AlertDialog r_dialog = builder.create();
        r_dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        r_dialog.show();
方法2:重寫寫樣式
 <style name="MyDialog"
          parent="android:Theme.Holo.Light.Dialog"> 
            <item name="android:windowBackground">@android:color/transparent</item>                             
      </style> 

簡單通用彈出選擇框,keys沒有可以不傳


public void Choise(final List<String> values,final List<String> keys,final FragmentActivity _ac,final DoubleAction _action,String _title)
	{		
		if(values.size()==0)
		{
			Toast.makeText(_ac, "正好努力資料中,請稍等", Toast.LENGTH_SHORT).show();
		}		
		AlertDialog.Builder builder = new AlertDialog.Builder(_ac,R.style.MyDialog);
        //builder.setIcon(R.drawable.ic_launcher);
        builder.setTitle(_title);
        //    指定下拉列表的顯示資料
        //    設定一個下拉的列表選擇項
        builder.setItems(values.toArray(new String[values.size()]), new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which)
            {   
            	String name = values.get(which);
            	if(name.equals("未選擇"))
            	{
            		_action.actionDouble(name,"-1");
            	}
            	else
            	{
            		if(keys==null)
            		{
            			_action.actionDouble(name,null);
            		}
            		else
            		{
            	      _action.actionDouble(name,keys.get(which));
            		}
            	}
            }
        });
        
        AlertDialog r_dialog = builder.create();
        r_dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        r_dialog.show();
	}

public interface DoubleAction {

	public void actionDouble(String _value,String _key);
}
 private void addChoiseEvent()
    {
    	final List<String> values = new ArrayList<String>();
    	values.add("a船");
    	values.add("s船");
    	
    	final List<String> keys = new ArrayList<String>();
    	keys.add("1");
    	keys.add("2");
    	
    	final TextView lsm =(TextView)getActivity().findViewById(R.id.manual_shipname); 		
		lsm.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				new SimpleChoise().Choise(values,keys,getActivity(),new DoubleAction(){
					@Override
					public void actionDouble(String _value, String _key) {
						// TODO Auto-generated method stub
						lsm.setText("value:"+_value+",key:"+_key);
						//lsm.setTag(data2);
					}	
				},"請選擇船舶");
			}
	    });
    }