我必须在运行时构建一个自定义对话框。根据具体情况,对话框应显示一到四个搜索栏。我想得到类似的东西:
我正在尝试从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 );
但是,不是在两个不同的行中显示文本“滑动我”和搜索栏,它只显示文本。如何创建这样的自定义对话框?
答案 0 :(得分:0)
Android Dialogs在它们可以包含的内容方面受到限制。创建活动更容易,并告诉android将其显示为对话框:
创建新活动并使用这些滑块添加布局文件
在清单中,使用此行
<activity android:theme="@android:style/Theme.Dialog">
让活动显示为对话框。这种做法不会出错。
此外,如果您需要从对话框中获取结果,也可以使用startActivityForResult
答案 1 :(得分:0)
您需要先使用搜索栏和文本视图制作布局。你可以使用layoutinflater将它添加到你的对话框中。 试试这个....
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
}
});