यहाँ की तरह AlertDialog वस्तु में इस दृश्य को जोड़ने के लिए एक विस्तृत ArrayAdapter साथ एक पूर्ण समाधान है कि प्रतीक की अनुमति देता है।
देखें, तो आप ऐसा इन दिखता 48 x 48 डी पी में बहुत अच्छे के लिए आकार, जो एक बंडल आकार नहीं है कि कम से http://developer.android.com/design/downloads/index.html
नोटhttp://developer.android.com/design/style/iconography.html पर http://developer.android.com/design/building-blocks/dialogs.html Iconogaphy पर संवादों और IconPacks के लिए डिजाइन नोट ' डाउनलोड से अपना खुद का आइकन स्केल करना होगा।
उपयोग:
@Override
public void onClick(View v) {
final String [] items = new String[] {"From Gallery", "From Camera"};
final Integer[] icons = new Integer[] {R.drawable.dialog_gallery_icon, R.drawable.dialog_camera_icon};
ListAdapter adapter = new ArrayAdapterWithIcon(getActivity(), items, icons);
new AlertDialog.Builder(getActivity()).setTitle("Select Image")
.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
Toast.makeText(getActivity(), "Item Selected: " + item, Toast.LENGTH_SHORT).show();
}
}).show();
}
ArrayAdapterWithIcon.java
public class ArrayAdapterWithIcon extends ArrayAdapter<String> {
private List<Integer> images;
public ArrayAdapterWithIcon(Context context, List<String> items, List<Integer> images) {
super(context, android.R.layout.select_dialog_item, items);
this.images = images;
}
public ArrayAdapterWithIcon(Context context, String[] items, Integer[] images) {
super(context, android.R.layout.select_dialog_item, items);
this.images = Arrays.asList(images);
}
public ArrayAdapterWithIcon(Context context, int items, int images) {
super(context, android.R.layout.select_dialog_item, context.getResources().getTextArray(items));
final TypedArray imgs = context.getResources().obtainTypedArray(images);
this.images = new ArrayList<Integer>() {{ for (int i = 0; i < imgs.length(); i++) {add(imgs.getResourceId(i, -1));} }};
// recycle the array
imgs.recycle();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
TextView textView = (TextView) view.findViewById(android.R.id.text1);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
textView.setCompoundDrawablesRelativeWithIntrinsicBounds(images.get(position), 0, 0, 0);
} else {
textView.setCompoundDrawablesWithIntrinsicBounds(images.get(position), 0, 0, 0);
}
textView.setCompoundDrawablePadding(
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12, getContext().getResources().getDisplayMetrics()));
return view;
}
}
चिह्न स्क्रीन आकार के आधार आकार परिवर्तन नहीं करता है ... यह करता है? – Si8
@ SiKni8, यदि आप उन्हें अन्य स्क्रीन आकारों के लिए अलग-अलग आकारों में चाहते थे तो आपको विभिन्न संसाधन ड्रॉबल्स प्रदान करना होगा। – aaronvargas
@ SiKni8: चूंकि आप संसाधन ड्रॉबल्स का संदर्भ दे रहे हैं, सही स्क्रीन स्क्रीन के आधार पर लिया जाता है, यदि आप इसे सही निर्देशिका में डालते हैं (res/drawable-? Dpi /) – chteuchteu