【问题标题】:Android AlertDialog Builder with Edittext setView shows at bottom?带有Edittext setView的Android AlertDialog Builder在底部显示?
【发布时间】:2015-08-10 11:53:30
【问题描述】:

您好,我正在使用没有自定义视图的 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);的顺序

【问题讨论】:

    标签: android android-alertdialog


    【解决方案1】:
        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();
    

    【讨论】:

      【解决方案2】:

      试试这个

      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();
      

      【讨论】:

        猜你喜欢
        • 2022-01-22
        • 2013-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-01
        • 2020-07-19
        • 2020-09-20
        相关资源
        最近更新 更多