5

"आकार बदलता नहीं है" मुझे अलर्टडिअलॉग और कस्टम सामग्री/दृश्य के साथ समस्या का सामना करना पड़ रहा है। बस कहा कि सॉर्टकीबोर्ड खोले जाने पर अलर्टडिअलॉग स्वयं का आकार बदलता नहीं है। निम्नलिखित स्क्रीनशॉट सबसे अच्छा दिखाने मैं क्या मेरी समस्या है और क्या हासिल करना चाहते:कस्टम व्यू के साथ अलर्टडिअलॉग

वर्तमान व्यवहार (बाएं) & व्यवहार करना चाहता था (दाएं)

Current behaviorwanted behavior

मैं एक के साथ एक कुछ अन्य धागे वहाँ पता एसओ पर भी इसी तरह की समस्या। दुर्भाग्य से प्रदान किए गए समाधानों में से कोई भी मेरे लिए काम नहीं करता है। मेरे नमूना कोड के बाद:

एक्सएमएल

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

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

     <EditText 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" > 
     </EditText> 
    </LinearLayout> 

</ScrollView> 

जावा - CustomAlertDialog.class

public class CustomAlertDialog extends AlertDialog{ 

    private Context context; 

    public CustomAlertDialog(Context context) { 
     super(context); 
     this.context = context; 
    } 

    public void buildDialog(){ 
     LayoutInflater inflater = getLayoutInflater(); 
     View layout = inflater.inflate(R.layout.dialog_content, null); 
     builder = new AlertDialog.Builder(context); 
     builder.setTitle("EditText"); 
     builder.setView(layout); 
     builder.setPositiveButton("Ok", new OnClickListener() { 

      @Override 
      public void onClick(DialogInterface arg0, int arg1) { 
       dismiss(); 
      } 
     }); 
     builder.create(); 
    } 

    public void showDialog(){ 
     builder.show(); 
    } 
} 

वर्ग/समारोह ऊपर मेरी Main.java कक्षा में एक बटन प्रेस पर कहा जाता है

btnAlertDialog.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      CustomAlertDialog dialog = new CustomAlertDialog(Main.this); 
      dialog.buildDialog(); 
      dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
      dialog.showDialog(); 
     } 
    }); 

मैंने निम्नलिखित चीजों को आजमाया है:

जोड़ा जा रहा है की तरह इस

android:scrollbars="vertical" 
android:scrollbarAlwaysDrawVerticalTrack="true" 

परिणाम LinearLayout को स्क्रॉलबार: कुछ भी नहीं

बदल संवाद के लिए एक ध्वज की स्थापना:

dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 

परिणाम: कुछ भी नहीं बदला

एक कस्टम को लागू करने AlertDialog की शैली:

<style name="AlertDialog" parent="@android:style/Theme.Holo.Light"> 
     <item name="android:windowFullscreen">false</item> 
</style> 

जावा

builder = new AlertDialog.Builder(context, R.style.AlertDialog); 

यह काम किया। दुर्भाग्य से यह कुछ समस्याओं जो आप निम्नलिखित स्क्रीनशॉट

Custom style - new problem

के बाद से मैं दिनों के लिए इस मुद्दे के साथ संघर्ष कर रहा है मैं किसी भी मदद की सराहना करते हैं में देख सकते हैं का उत्पादन किया। धन्यवाद!

समाधान

अब मैं अपने CustomAlertDialog.class में संवाद बनाने के लिए निम्न विधि का उपयोग कर रहा हूँ। अधिक जानकारी के लिए nandeesh के उत्तर के नीचे मेरी टिप्पणी देखें कि यह पहले क्यों काम नहीं किया था।

public void startDialog(){ 
     LayoutInflater inflater = getLayoutInflater(); 
     View layout = inflater.inflate(R.layout.dialog_content, null); 
     builder = new AlertDialog.Builder(context); 
     builder.setTitle("EditText"); 
     builder.setView(layout); 
     builder.setPositiveButton("Ok", new OnClickListener() { 

      @Override 
      public void onClick(DialogInterface arg0, int arg1) { 
       dismiss(); 
      } 
     }); 
     AlertDialog aDialog = builder.create(); 
     aDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
     aDialog.show(); 
    } 
+0

उपयोग लेआउट वजन भी नहीं कर रहा हूँ । माता-पिता से मेल नहीं खाता – Doomsknight

+0

match_parent चौड़ाई के लिए बिल्कुल ठीक है। इसके अलावा एक सिंगल लाइनरलाइट वजन कम करना संभव नहीं है। – reVerse

+0

अच्छी तरह से बटन दिखाई नहीं देंगे क्योंकि आप संवाद में कस्टम दृश्य का उपयोग कर रहे हैं। और आपके द्वारा बटन को दिखाए जाने के बाद यह विशिष्ट थीम दी गई। मैं कस्टम बटन का भी उपयोग करता हूं अगर मैं संवाद में कस्टम व्यू तैयार करता। – k0sh

उत्तर

6

मुझे यकीन है कि तुम कहाँ setSoftInputmode किया, लेकिन

builder.show(); 

उपयोग

AlertDialog mDialog = builder.create(); 
mDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
mDialog.show(); 

के बजाय अगर यह काम नहीं करता है, तो पोस्ट CustomAlertDialog वर्ग

+0

पर फिट होने की तुलना में अधिक पंक्तियां हैं, अब यह काम करता है। मैंने अपने प्रश्न को मेरे 'CustomAlertDialog.class' के पूर्ण कोड के साथ संपादित किया है। ऐसा लगता है कि समस्या यह थी कि मैंने कभी भी अलर्टडिअलॉग कभी नहीं बनाया है। इसलिए जब मैंने अपने मेन.क्लास में ध्वज सेट किया तो इसका कोई प्रभाव नहीं पड़ा क्योंकि प्रदर्शित संवाद मेरे 'मेन.क्लास' लेकिन बिल्डर का संवाद नहीं था। अब मैं कस्टम अलर्टडिअलॉग क्लास में ध्वज सेट करता हूं और स्पष्ट रूप से अलर्टडिअलॉग बनाता हूं और यह काम करता है। फिर से धन्यवाद, तुमने मुझे समाधान के लिए नेतृत्व किया। – reVerse

0

जाहिर है इस समस्या कैसे संवाद बनाया गया है के साथ कोई संबंध नहीं है, अगर आप एक कस्टम का उपयोग दृश्य आदि, समस्या windowSoftInputMode है।

विंडो के लिए इसे बदलने के अलावा गतिविधि के लिए AndroidManifest.xml में windowSoftInputMode को बदलना चाल करना चाहिए।

सुनिश्चित करें कि संवाद में आपका दृश्य स्क्रॉलव्यू है।

+0

'एंड्रॉइड को लागू करना: windowSoftInputMode =" मेरी गतिविधि में "समायोजित करें" 'चाल नहीं करता है, मैंने पहले यह भी कोशिश की है और संदर्भ मैनुअल के अनुसार यह केवल मुख्य विंडो को प्रभावित करेगा। इसके अलावा: जैसा कि आप मेरे एक्सएमएल-कोड में देख सकते हैं वहां एक स्क्रॉलव्यू है और यह बिना किसी समस्या के काम करता है यदि पूरे <स्क्रीन – reVerse