带有Edittext setView的Android AlertDialog Builder显示在底部?

时间:2015-05-28 06:22:01

标签: android alertdialog android-alertdialog

您好我使用的AlertDialog没有自定义视图,使用以下方法设置列表的数组适配器:

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
final EditText input = new EditText(MainActivity.this);
builder.setView(input);
builder.setTitle("Please Select");

String[] listStrings = {"string1", "string2"};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_single_choice, listStrings);
builder.setSingleChoiceItems(arrayAdapter, 0, new DialogInterface.OnClickListener()
{
    @Override
    public void onClick(DialogInterface dialog, int which)
    {
        dialog.dismiss();
    }
});

builder.show();

我希望附加EditText用于搜索列表,但EditText显示在列表的末尾。我希望EditText位于列表的首位,因此请在不使用自定义布局的情况下向我推荐。

final EditText input = new EditText(MainActivity.this);
builder.setView(input);

我尝试改变builder.setView(input);

的顺序

2 个答案:

答案 0 :(得分:0)

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    final EditText input = new EditText(MainActivity.this);
    LinearLayout layout=new LinearLayout(this);
  layout.setOrientation(LinearLayout.VERTICAL);
    layout.addView(input);
    builder.setTitle("Please Select");

    String[] listStrings = {"string1", "string2"};
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_single_choice, listStrings);

    ListView list=new ListView(this);


    list.setAdapter(arrayAdapter);
    layout.addView(list);
    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {


        }
    });
   builder.setView(layout);
    builder.show();

答案 1 :(得分:0)

试试这个

boolean checked = false;


AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        LinearLayout linear = new LinearLayout(MainActivity.this);
        LinearLayout.LayoutParams parm = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        linear.setOrientation(LinearLayout.VERTICAL);
        linear.setLayoutParams(parm);
        final EditText input = new EditText(MainActivity.this);
        builder.setTitle("Please Select");
        linear.addView(input);

        String[] listStrings = {"string1", "string2"};
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_single_choice, listStrings);
        ListView list=new ListView(this);


        list.setAdapter(arrayAdapter);
        linear.addView(list);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                CheckedTextView chk = (CheckedTextView) view;
                Log.d("", "Checked = " + checked);
                checked = checked ? false:true;
                chk.setChecked(checked);

            }
        });
        builder.setView(linear);

        builder.show();