2

我必须在运行时构建一个自定义对话框。根据具体情况,对话框应显示一到四个搜索栏。我想获得类似的东西:

  • 标题1 搜索栏1
  • 标题2 搜索栏2 ...

我正在试验取自 Android 开发人员指南网页的 FireMissilesDialogFragment 示例代码。我修改了 onCreateDialog() 方法,添加了以下代码:

    // Use the Builder class for convenient dialog construction
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    Context     context = builder.getContext();//getActivity().getBaseContext(); 
    LinearLayout    layout = new LinearLayout( context );

    layout.setLayoutParams( new LinearLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT) );


    SeekBar         seek_bar = new SeekBar( context );

    TextView        text = new TextView( context );
    text.setClickable(false);
    text.setText( "slide me" );

    layout.addView( text, new LinearLayout.LayoutParams(
            LayoutParams.MATCH_PARENT,
            LayoutParams.WRAP_CONTENT) );

    layout.addView( seek_bar, new LinearLayout.LayoutParams(
            LayoutParams.MATCH_PARENT,
            LayoutParams.WRAP_CONTENT) );


    builder.setView( layout );

但是,它不是在两个不同的行中显示文本“滑动我”和搜索栏,而是仅显示文本。如何创建这样的自定义对话框?

4

2 回答 2

0

Android Dialogs 可以包含的内容有些限制。创建 Activity 并告诉 android 将其显示为对话框更容易:

  1. 创建一个新活动并使用这些滑块添加一个布局文件

  2. 在清单中,使用这一行

<activity android:theme="@android:style/Theme.Dialog">

让活动显示为对话框。这种方法不会出错。
此外,如果您需要从对话框中获取结果,可以使用startActivityForResult

于 2012-12-19T19:05:36.563 回答
0

您需要先使用搜索栏和文本视图进行布局。您可以使用布局充气器将其添加到您的对话框中。尝试这个....

 LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
View layout = inflater.inflate(R.layout.yourLayoutId, (ViewGroup) findViewById(R.id.MyLayout));
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setView(layout);
AlertDialog alertDialog = builder.create();
alertDialog.show();
SeekBar sb = (SeekBar)layout.findViewById(R.id.yourSeekBar);
sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){
        //Do something here with new value
    }
});
于 2012-12-19T19:36:11.323 回答