Android:如何创建Detail alertdialog

Far*_*har 2 android android-alertdialog

我一直在玩警报对话框.我想显示一个对话框,显示listview中列表项的特定信息.就像android的文件管理器的详细对话框一样.

图片:https://dl.dropbox.com/u/20856352/detailsbox.jpg

有关此详细信息对话框的有趣之处在于,它显示的列表项与首选项屏幕中的首选项非常相似.他们可以点击它们,它们显示了一个非常漂亮的两行项目列表项目.

我需要创建一个类似的对话框,但我不知道如何实现这一目标.我玩了一下.首选项XML不能用作alertdialog的布局.而且我无法开发出类似于上面图片的布局.需要帮助/指南如何实现这一目标.

法拉兹爱资哈尔

ab1*_*b11 5

您可能不想使用自定义对话框,因为很难复制AlertDialog的外观.AlertDialog可以使用AlertDialog.setListAdapter显示项目列表.您可以使用ListAdapter的自定义实现自定义项目列表,以显示每个项目的两行文本.附带的截图是由下面的代码和xml生成的.

在此输入图像描述

public class Temp extends Activity
{
    private String[] listItemsFirstRow = {"item 1", "item 2", "item 3"};
    private String[] listItemsSecondRow = {"item 1", "item 2", "item 3"};

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setAdapter(new MyAdapter(), null);
        builder.setTitle("Title");
        builder.setPositiveButton(android.R.string.ok, new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });

        builder.show();
    }

    class MyAdapter extends BaseAdapter
    {

        @Override
        public int getCount() 
        {
            return listItemsFirstRow.length;
        }

        @Override
        public Object getItem(int position) 
        {
            //this isn't great
            return listItemsFirstRow[position];
        }

        @Override
        public long getItemId(int position) 
        {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) 
        {
            if(convertView == null)
            {
                convertView = getLayoutInflater().inflate(R.layout.main, null);
            }

            ((TextView)convertView.findViewById(R.id.text1)).setText( listItemsFirstRow[position]);
            ((TextView)convertView.findViewById(R.id.text2)).setText( listItemsSecondRow[position]);

            return convertView;
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:minHeight=![enter image description here][2]"?android:attr/listPreferredItemHeight"
    android:orientation="vertical"
    android:gravity="center_vertical"
    android:paddingLeft="15dip"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <TextView
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="?android:attr/textColorSecondary" 
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)