Wednesday, 15 July 2015

android - How can I set an AlertDialog item height? -



android - How can I set an AlertDialog item height? -

currently on android 4.3 device. i'm using first-class reply provided here able cut down font size of alertdialog's individual items:

<style name="alertdialogtheme" parent="android:theme.dialog"> <item name="android:textsize">13sp</item> </style>

the dialog built with:

contextthemewrapper cw = new contextthemewrapper( this, r.style.alertdialogtheme ); alertdialog.builder builder = new alertdialog.builder(cw);

however, problem individual height of items still stays same — in fact, there 5th element shown when scroll in dialog:

i tried setting dividerheight increased spacing. set layout_margin property 0dp without success.

what's right style definition dialog cut down space between labels?

note not want build whole dialog using view again. i'd maintain existing alertdialog.

here tricky solution – override getview method listview in alertdialog , alter textview style attributes programmatically:

contextthemewrapper cw = new contextthemewrapper(mainactivity.this, r.style.alertdialogtheme); alertdialog.builder builder = new alertdialog.builder(cw); alertdialog dialog = builder.create(); dialog.setonshowlistener(new dialoginterface.onshowlistener() { @override public void onshow(dialoginterface dialoginterface) { listview listview = ((alertdialog) dialoginterface).getlistview(); final listadapter originaladapter = listview.getadapter(); listview.setadapter(new listadapter() { @override public int getcount() { homecoming originaladapter.getcount(); } @override public object getitem(int id) { homecoming originaladapter.getitem(id); } @override public long getitemid(int id) { homecoming originaladapter.getitemid(id); } @override public int getitemviewtype(int id) { homecoming originaladapter.getitemviewtype(id); } @override public view getview(int position, view convertview, viewgroup parent) { view view = originaladapter.getview(position, convertview, parent); textview textview = (textview) view; //textview.settextsize(16); set text size programmatically if needed textview.setlayoutparams(new abslistview.layoutparams(abslistview.layoutparams.match_parent, 32 /* item height */)); homecoming view; } @override public int getviewtypecount() { homecoming originaladapter.getviewtypecount(); } @override public boolean hasstableids() { homecoming originaladapter.hasstableids(); } @override public boolean isempty() { homecoming originaladapter.isempty(); } @override public void registerdatasetobserver(datasetobserver observer) { originaladapter.registerdatasetobserver(observer); } @override public void unregisterdatasetobserver(datasetobserver observer) { originaladapter.unregisterdatasetobserver(observer); } @override public boolean areallitemsenabled() { homecoming originaladapter.areallitemsenabled(); } @override public boolean isenabled(int position) { homecoming originaladapter.isenabled(position); } }); } }); dialog.show();

android android-alertdialog android-styles

No comments:

Post a Comment