我正在建立一个AlertDialog来显示一个菜单,用户可以在其中选择他的手机号码所在的国家/地区。
列表的一个例子是这样的:
-----------------------------
| PHONE PREFIX |
| |
| Spain - 0034 |
| United Kingdom - 0044 |
| France - 0033 |
|---------------------------|
| CANCEL ACCEPT |
|----------------------------
依旧......
我创建了一个list_view项目:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_listview_pais"
android:textSize="20sp"
android:text="United Kingdom"
android:layout_alignParentLeft="true"
android:textColor="@color/cardview_dark_background"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="10dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_listview_guion"
android:textSize="20sp"
android:text="-"
android:layout_centerHorizontal="true"
android:textColor="@color/cardview_dark_background"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="10dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_listview_prefijo"
android:textSize="20sp"
android:layout_marginTop="5dp"
android:textColor="@color/cardview_dark_background"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:layout_alignParentRight="true"
android:layout_alignBaseline="@+id/item_listview_pais"
android:text="0034"
/>
</RelativeLayout>
</RelativeLayout>
我想要的AlertDialog布局非常简单:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="30dp"
>
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/input_turno_dialog_listview_prefijos">
</ListView>
</ScrollView>
</LinearLayout>
在我的活动的某个时刻,我按下一个按钮,在actionbutton事件中,我调用一个PrefijosDS,它给我一个ArrayList来填充适配器。 Prefijo课程是这样的:
private String Country;
private String Prefijo;
所以Prefijo对象可以是这样的:
Prefijo prefijo = new Prefijo("Spain","0034");
使用我的PrefijoDS,我得到一个数组,所以我得到了我需要的数据。然后,我像这样调用AlertDialog:
AlertDialog alertDialog = builder.create();
ListView lv = (ListView) convertView.findViewById(R.id.input_turno_dialog_listview_prefijos);
PrefijoDS prefijoDS = new PrefijoDS(getApplicationContext());
ListaPrefijosAdapter prefijosAdapter = new ListaPrefijosAdapter(getApplicationContext());
prefijosAdapter.set((ArrayList<Prefijo>) prefijoDS.obtenerPrefijos());
lv.setAdapter(prefijosAdapter);
alertDialog.show();
它有效,我显示了AlertDialog,但ListView的高度非常小,几乎是单行项目的高度。我想要的是调整高度一点,这样它可以在列表上显示3或4个项目,然后其余的可以滚动。我尝试了不同的方法来制作最高的AlertDialog,但每次我得到相同的大小。我获得AlertDialog的唯一方法是当我不使用ScrollView时。然而,这变成了一个我不想要的非常大的AlertDialog。
我试过这样做:
alertDialog.getWindow().setLayout(200,300);
但结果是一个调整大小的AlertDialog,但ListView保持不变。 我该怎么办?
非常感谢!
答案 0 :(得分:2)
更改警报对话框大小
AlertDialog.Builder adb = new AlertDialog.Builder(this);
Dialog d = adb.setView(new View(this)).create();
// (That new View is just there to have something inside the dialog that can grow big enough to cover the whole screen.)
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(d.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
d.show();
d.getWindow().setAttributes(lp);
还有一件事将列表视图layout_height和layout_width更改为match_parent
答案 1 :(得分:0)
您可以使用体重
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="50"
android:orientation="vertical">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/input_turno_dialog_listview_prefijos">
</ListView>
</LinearLayout>
<Button
android:id="@+id/btn_save"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="SAVE" />
</LinearLayout>