带有页眉和页脚的对话框中的Listview

时间:2016-11-22 06:02:46

标签: android listview android-dialog

我在对话框中有一个列表视图,然后我必须使用页眉布局和页脚布局。我这样做的方式,将我的标题布局对齐到顶部,将页脚布局对齐到底部。但它有一个问题。看看下面的图片.. Dialog with the list inside with header and footer

但通过这样做,对话框的大小更长,这是不可预期的

我被困在这种情况下。好吧如果我将我的页脚与列表视图结束对齐,那么页脚就会离开屏幕。这也是不期望的。

  

我想要的是什么:

  • 我希望我的列表视图应该在对话框的中心可见,标题布局对齐顶部,页脚布局与对话框底部边框的bootm对齐,它不应占用屏幕的全长。
  • 有没有办法将页脚对齐到对话框的底部,对话框自动保持其高度(注意:我不想给对话框硬编码高度,因为我希望对话框在所有设备上看起来都一样。)

请帮助我陷入困境。如果我们在安装应用程序时查看谷歌对话框,它会在列表视图的中心与对话框底部对齐。他们是怎么做到的?

3 个答案:

答案 0 :(得分:2)

这是您的问题的动态解决方案.. 示例对话框xml文件名<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/page_bg" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Header Button" /> <ListView android:id="@+id/lvCommon" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Bottom Button" /></LinearLayout>` ..

private void showAlert() {

    AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
    View view = LayoutInflater.from(getActivity()).inflate(R.layout.activity_list_test, null);
    dialog.setView(view);
    dialog.setTitle(null);
    dialog.setMessage(null);

    ArrayList<String> mList = new ArrayList<>();
    for (int i = 0; i < 15; i++) {
        mList.add("ABC");
    }


    ListView lvCommon = (ListView) view.findViewById(R.id.lvCommon);

    int deviceHeight = getScreenSize(getActivity()).y;
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, deviceHeight / 3,1f);
    lvCommon.setLayoutParams(layoutParams);
    lvCommon.setAdapter(new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, mList));
    dialog.setCancelable(false);
    dialog.show();
}

这是来自您想要的片段/活动的调用..

"deviceheight/3"

设备高度将自动测量,根据它,对话框大小为getScreenSize ..所以它将在所有设备中维护..

现在你需要方法 public static Point getScreenSize(Activity act) { int screenWidth = 0; int screenHeight = 0; final DisplayMetrics metrics = new DisplayMetrics(); act.getWindowManager().getDefaultDisplay().getMetrics(metrics); screenWidth = metrics.widthPixels; screenHeight = metrics.heightPixels; return new Point(screenWidth, screenHeight); } ..所以这里是::

GoogleApiClient.disconnect()

答案 1 :(得分:0)

您可以将布局设置为Dialog,如下所示

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView android:id="@+id/header_txt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Header Text"
        android:gravity="center|top"/>
    <ListView android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:gravity="center_vertical/>
    <TextView android:id="@+id/footer_txt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Footer Text"
        android:gravity="center|bottom"/>
</LinearLayout>

它会设置Header View to TopListView to CenterFooter View to Bottom

答案 2 :(得分:0)

您可以尝试这个,...创建一个xml并复制粘贴此代码并设置对话框xml

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


    <LinearLayout
        android:paddingBottom="8dp"
        android:paddingTop="8dp"
        android:layout_marginTop="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ff0000"
        android:gravity="center"
        android:orientation="vertical"
        >


        <RelativeLayout
            android:id="@+id/table_rl"
            android:padding="10dp"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:layout_height="0dp"
            android:orientation="vertical">

        <TextView
            android:id="@+id/your_items_tv"
            android:textColor="@color/text_black"
            customFontPath="lato_black.ttf"
            android:layout_gravity="center"
            android:gravity="center"
            android:layout_marginTop="20dp"
            android:text="HEADING"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

            <LinearLayout
                android:layout_below="@+id/your_items_tv"
                android:paddingBottom="5dp"
                android:layout_marginTop="10dp"
                android:paddingTop="5dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <TextView
                    android:textColor="@color/text_black"
                    customFontPath="lato_bold.ttf"
                    android:layout_gravity="center"
                    android:gravity="left"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"
                    android:text="TOP BAR"/>

            </LinearLayout>
            <ListView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"></LinearLayout>
        </RelativeLayout>
        <LinearLayout
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_below="@+id/table_rl"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ff00ff">

            <TextView
                android:padding="5dp"
                android:textSize="18dp"
                android:textColor="@color/text_black"
                customFontPath="lato_bold.ttf"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="Bottom Bar "/>

        </LinearLayout>


    </LinearLayout>
</LinearLayout>