2012-12-22 35 views
9

Tôi có một hộp thoại cảnh báo được bắt đầu khi ai đó chạm vào một nút cụ thể. Hộp thoại cảnh báo chứa một chế độ xem được xác định bởi tệp xml bố cục. Bố cục này chứa một số điều khiển như hộp kiểm, chỉnh sửa trường văn bản, ... Các điều khiển này đều nằm trong chế độ xem scrool để bạn có thể cuộn qua nội dung, nếu toàn bộ nội dung không vừa trên màn hình.Các nút của hộp thoại cảnh báo bị cắt

Vấn đề bây giờ là khi tôi bắt đầu hộp thoại cảnh báo này, các nút ở phía dưới được cắt bỏ màn hình. Thanh thanh scrool đang hoạt động và tôi có thể cuộn qua nội dung của hộp thoại cảnh báo, các nút của hộp thoại cảnh báo đôi khi không hiển thị hoàn toàn.

Điều này có nghĩa là: Đôi khi, tất cả đều tốt và tôi có thể thấy các nút của hộp thoại cảnh báo, đôi khi vì lý do lạ, các nút bị cắt. Tôi nghĩ rằng đó là một vấn đề của quan điểm là lớn cho hộp thoại cảnh báo và đẩy các nút xuống. Ví dụ: chế độ xem có chứa điều khiển văn bản chỉnh sửa. Nếu tôi nhập tên của tôi, mọi thứ đều ổn. Nhưng nếu tôi thêm một dòng mới vào văn bản chỉnh sửa này, các nút bắt đầu được cắt bỏ một chút. Tôi đã làm gì sai? Tôi nghĩ rằng chế độ xem cuộn sẽ xử lý quá khổ chế độ xem của tôi để hộp thoại cảnh báo khớp với màn hình. Ứng dụng của tôi luôn ở chế độ dọc.

Mã về quan điểm:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollView2" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:padding="5dp" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/bitteeinstellungenwaehlen" /> 

     <EditText 
      android:id="@+id/edtTeam1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:hint="@string/hteam1" 
      android:text="Christoph" > 

      <requestFocus /> 
     </EditText> 

     <EditText 
      android:id="@+id/edtTeam2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:hint="@string/hteam2" 
      android:text="Lea" /> 

     <EditText 
      android:id="@+id/edtTeam3" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:hint="@string/hteam3" 
      android:text="Ludwig" /> 

     <EditText 
      android:id="@+id/edtTeam4" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:hint="@string/hteam4" 
      android:text="Anja" /> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/weitereeinstellungen" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 

      <CheckBox 
       android:id="@+id/chkModerationMode" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/moderationsmodus" /> 

      <TextView 
       android:id="@+id/textView3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="10dp" 
       android:text="@string/info" /> 

     </LinearLayout> 

     <CheckBox 
      android:id="@+id/chkPassOver" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:checked="true" 
      android:text="@string/weitergeben" /> 

     <CheckBox 
      android:id="@+id/chkBlackScreen" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/blankscreen" /> 

    </LinearLayout> 

</ScrollView> 

Và đó là cách tôi bắt đầu hộp thoại cảnh báo:

final AlertDialog.Builder alert = new AlertDialog.Builder(QuizEditor.this); 

    alert.setTitle(getString(R.string.speichernUndVorschau) + "..."); 
    alert.setMessage(""); 


    LayoutInflater inflater = LayoutInflater.from(QuizEditor.this); 
    final View layFrage = inflater.inflate(R.layout.layoutquizsettings,null); 
    alert.setView(layFrage); 

    final CheckBox chkModeration = (CheckBox) layFrage.findViewById(R.id.chkModerationMode); 
    final CheckBox chkPassOver = (CheckBox) layFrage.findViewById(R.id.chkPassOver); 
    final CheckBox chkBlackScreen = (CheckBox) layFrage.findViewById(R.id.chkBlackScreen); 

    final EditText edtTeam1 = (EditText) layFrage.findViewById(R.id.edtTeam1); 
    final EditText edtTeam2 = (EditText) layFrage.findViewById(R.id.edtTeam2); 
    final EditText edtTeam3 = (EditText) layFrage.findViewById(R.id.edtTeam3); 
    final EditText edtTeam4 = (EditText) layFrage.findViewById(R.id.edtTeam4); 



    alert.setNeutralButton(getString(R.string.speichernUndVorschau), new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int whichButton) { 




    } 
    }); 

    alert.setNegativeButton(getString(R.string.abbrechen), new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
     // Canceled. 
     } 
    }); 



    final AlertDialog dialog2 = alert.create(); 

    dialog2.setOnShowListener(new OnShowListener() { 

     @Override 
     public void onShow(DialogInterface dialog) { 
      // TODO Auto-generated method stub 
      Button btnStarten = (Button) dialog2.getButton(AlertDialog.BUTTON_NEUTRAL); 
      btnStarten.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        ArrayList<String> teams = new ArrayList<String>(); 

        String team1 = edtTeam1.getText().toString().trim(); 
        String team2 = edtTeam2.getText().toString().trim(); 
        String team3 = edtTeam3.getText().toString().trim(); 
        String team4 = edtTeam4.getText().toString().trim(); 

        if(team1.length() > 0) teams.add(team1); 
        if(team2.length() > 0) teams.add(team2); 
        if(team3.length() > 0) teams.add(team3); 
        if(team4.length() > 0) teams.add(team4); 

        if(teams.size() == 0) { 
         Toast.makeText(QuizEditor.this, getString(R.string.keinteameingegeben), Toast.LENGTH_SHORT).show(); 

        } 
        else 
        { 
         // Quiz starten 



         dialog2.dismiss(); 
         Intent myIntent; 

         if(chkBlackScreen.isChecked()) { 
          myIntent = new Intent(QuizEditor.this, BlackScreen.class); 
         } 
         else // Direkt das Quiz starten 
         { 
          myIntent = new Intent(QuizEditor.this, Quiz.class); 
         } 


         myIntent.putStringArrayListExtra("teams", teams); 
         myIntent.putExtra("moderation", chkModeration.isChecked()); 
         myIntent.putExtra("passover", chkPassOver.isChecked()); 
         myIntent.putExtra("filename", filename); 


         QuizEditor.this.startActivity(myIntent); 
        } 
       } 

      }); 

     } 

    }); 

    dialog2.show(); 
    // dialog2.getWindow().setLayout(LayoutParams.WRAP_CONTENT, 300); 

Tôi xin lỗi vì những lời của Đức. Trong hình ảnh bạn có thể thấy vấn đề. Rất tiếc, tôi không được phép tải lên ảnh chụp màn hình mà tôi đã thực hiện ...

+2

Được rồi, cảm ơn sự giúp đỡ của bạn! May mắn thay, tôi đã tìm thấy thông báo: alert.setMessage (""); Vì tôi đã xóa dòng này, tất cả đều hoạt động tốt. – Chris623

+0

cùng ở đây, thx cho giải pháp này. Komischer fehler und schwer zu tìm kiếm danke dafür =) –

Trả lời

0

Đặt dòng EditText thành 1. Cũng đặt LinearLayout ngoài thành fill_parent.

0

Chỉ cần tạo tất cả các thuộc tính EditTextandroid:singleLine="true" và sau đó thử kiểm tra.

0

Câu hỏi đã được giải quyết trong các nhận xét, nhưng tôi sẽ thêm một câu trả lời cho tính đầy đủ và để cho thấy rằng nó cũng làm việc cho tôi.

Để xem AlertDialog với chế độ xem tùy chỉnh, không sử dụng đường dây .setMessage. Loại bỏ các dòng sau trong dự án của tôi gây ra các nút để ngừng cắt bớt.

.setMessage("This is my message") 
Các vấn đề liên quan