0

我正在开发一个使用主题全息对话框的活动的 android 项目。

在对话框中,我有一个列表视图,我想要的是在底部始终显示一个线性布局,其中包含两个相邻的按钮。通过从呼叫日志中检索数据并填充列表的适配器来填充列表视图。

我遇到的问题是列表视图总是显示在顶部,占据整个对话框,底部的按钮,列表的内容与按钮重叠。我希望列表位于对话框顶部到线性布局按钮组顶部的空间内。下面是主要内容视图的代码。此布局是使用 onCreate 方法中的 setContentView 设置的

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <ListView android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
    </ListView>
    <LinearLayout android:id="@+id/call_log_select_host_button_group"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true">
        <Button android:id="@+id/call_log_select_btnCancel"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Block"/>
        <Button android:id="@+id/call_log_select_btnBlock"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Cancel" />
    </LinearLayout>
</RelativeLayout>

我不确定它是否有任何区别,但以防万一下面是我填充列表和设置视图的方式。

@Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            CallInformation callInformation = (CallInformation)arrayList.get(position);
            LayoutInflater inflator = (LayoutInflater)context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            View rowView = inflator.inflate(R.layout.call_log_selection, parent, false);

            ImageView imageView = (ImageView)rowView.findViewById(R.id.call_log_selector_image);

            if (callInformation.type == android.provider.CallLog.Calls.INCOMING_TYPE)
            {
                imageView.setImageResource(android.R.drawable.sym_call_incoming);
            }
            else if (callInformation.type == android.provider.CallLog.Calls.OUTGOING_TYPE)
            {
                imageView.setImageResource(android.R.drawable.sym_call_outgoing);
            }
            else if (callInformation.type == android.provider.CallLog.Calls.MISSED_TYPE)
            {
                imageView.setImageResource(android.R.drawable.sym_call_missed);
            }

            CheckBox checkbox = (CheckBox)rowView.findViewById(R.id.call_log_selector_checkbox);
            checkbox.setText(callInformation.content);
            checkbox.setTag(callInformation.telephone);
            return rowView;
        }
    }

下面的代码是适配器获取视图函数膨胀的 XML 布局

<?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="wrap_content"
    android:orientation="vertical" >
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <ImageView android:id="@+id/call_log_selector_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="5dp"
            android:layout_gravity="center"
            android:src="@android:drawable/stat_sys_phone_call"/>
        <CheckBox android:id="@+id/call_log_selector_checkbox"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>
</LinearLayout>

感谢您的任何帮助,您可以提供。

4

1 回答 1

2

试着告诉你ListView保持在你之上LinearLayout

 <ListView android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/call_log_select_host_button_group>  // Add this line here
</ListView>
于 2013-05-28T01:08:48.947 回答