虽然谷歌的sdk已经给大家提供了诸多的接口去实现大家想要的界面,但是时常我们还是因为客户的需求,来对界面进行相应的修改,以更加适合业务的需要。
在进行android界面设计的时候,我在使用AlertDialog进行弹出框的列表选择的时候,发现本来可以一屏显示的列表,因为谷歌自定义的列表样式,出现了滚动条,客户希望一屏就能显示。
第一想到的就是重写AlertDialog的,然后再重新实现布局,但是觉得这样又需要去重写列表选择的功能,考虑到这样一个小的客户需求,重新去重新这么多的代码,实在得不偿失,就开始考虑其它的方法。
最后通过查阅资料,发现可以调用setAdapter,在adapter中指定给item指定一个xml布局文件,然后在布局xml文件中定义相关样式。这样就可以轻松去设置每个Item的高度了和相关的样式了。
布局文件如下
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:gravity="center_vertical"
android:ellipsize="marquee"/>
然后直接通过setAdapter()方法去调用即可,不再需要调用setItems();
调用代码如下
spinner_handle= (Button) findViewById(R.id.method_result);
spinner_handle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new AlertDialog.Builder(context)
.setTitle("请选择处理结果")
.setAdapter(new ArrayAdapter(MaintainBillActivity.this,R.layout.result_spinner_layout,handle_items) ,new DialogInterface.OnClickListener() {//调用适配器
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
handle_method_result=handle_items[which];
spinner_handle.setText(handle_method_result);
}
})
.create().show();
}
});
原图,列表项太宽,出现流动条
上传一下列表的效果图片