簡體   English   中英

android中的自定義警報對話框會覆蓋其他對象

[英]Custom alert dialog in android overwrites other object

我正在嘗試創建自定義警報對話框,其中兩個字段是編輯文本,另一個是微調器。 問題是我只能看到微調器,我無法看到編輯文本。 編輯文本可用,但微調器隱藏了編輯文本的內容。 所以我的問題是如何設置編輯文本和Spinner的位置。

以下是我的代碼。

AlertDialog.Builder alertDialog = new AlertDialog.Builder(
            RecordAudio.this);
    alertDialog.setTitle("Would you Like to save your Recording");
    alertDialog.setMessage("Enter Audio Name");
    alertDialog.setIcon(R.drawable.save_icon);

    final EditText editTextAudioName = new EditText(RecordAudio.this);
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    editTextAudioName.setLayoutParams(lp);
    alertDialog.setView(editTextAudioName);

    final Spinner spinnerListData = new Spinner(RecordAudio.this);
    RelativeLayout.LayoutParams lpSpinner = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    spinnerListData.setLayoutParams(lpSpinner);
    alertDialog.setView(spinnerListData);

    dataManipulatorClass = new DataManipulatorClass(this);
    names2 = dataManipulatorClass.selectAll();

    stg1 = new String[names2.size()];
    int x = 0;
    String stg;

    for (String[] name : names2) {
        stg = "Class Name : " + name[1];
        stg1[x] = stg;
        x++;
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            RecordAudio.this, android.R.layout.simple_spinner_item, stg1);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerListData.setAdapter(adapter);
    spinnerListData.setWillNotDraw(false);

    spinnerListData.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View v,
                int position, long id) {
            Toast.makeText(getApplicationContext(),
                    "Spinner Item selected", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub
        }
    });

    alertDialog.setPositiveButton("Save",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                    Code.audioName = editTextAudioName.getText().toString()
                            .trim();

                    recorder = new MediaRecorder();
                    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
                    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                    recorder.setOutputFile(getFilename());
                    recorder.setOnErrorListener(errorListener);
                    recorder.setOnInfoListener(infoListener);

                    try {
                        recorder.prepare();
                        recorder.start();

                        if (Code.i == true) {
                            new Timer().schedule(new TimerTask() {
                                @Override
                                public void run() {
                                    runOnUiThread(new Runnable() {
                                        @Override
                                        public void run() {
                                            stopRecording();
                                            enableButtons(false);
                                        }
                                    });
                                }
                            }, 41000);
                        } else {
                            new Timer().schedule(new TimerTask() {
                                @Override
                                public void run() {
                                    runOnUiThread(new Runnable() {
                                        @Override
                                        public void run() {
                                            stopRecording();
                                            enableButtons(false);
                                        }
                                    });
                                }
                            }, 21000);
                        }
                    } catch (IllegalStateException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    myChronometer.setBase(SystemClock.elapsedRealtime());
                    myChronometer.start();
                }
            });

    alertDialog.setNegativeButton("Cancel",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                    enableButtons(false);
                }
            });
    alertDialog.show();

setView方法: -

將自定義視圖設置為Dialog的內容。 如果提供的視圖是ListView的實例,則將使用淺色背景。

所以你需要在某些布局中添加兩個視圖,例如LinearLayout,然后調用setView方法

這是因為您要將視圖設置為警報對話框兩次。 首先定義一個Linearlayout,然后將視圖(編輯文本和微調器)添加到其中,然后將Linearlayout設置為Alert Dialog。

LinearLayout parentLayout = new LinearLayout(RecordAudio.this);

LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

final EditText editTextAudioName = new EditText(RecordAudio.this);

 RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); editTextAudioName.setLayoutParams(lp); parentLayout.addView(editTextAudioName); final Spinner spinnerListData = new Spinner(RecordAudio.this); RelativeLayout.LayoutParams lpSpinner = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); spinnerListData.setLayoutParams(lpSpinner); parentLayout.addView(spinnerListData); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM