2011-02-07 10 views
11

ऐसा लगता है कि नीचे दी गई छवि में एडिटटेक्स्ट बहुत व्यापक है। मुझे लगता है कि मैंने कुछ तरीकों से एसडीके का दुरुपयोग किया है और अन्यथा आश्वस्त होने तक मैं EditText के किनारों पर कुछ मार्जिन/पैडिंग पिक्सल निर्दिष्ट करने का कोई तरीका नहीं ढूंढ रहा हूं।अलर्टडियलॉग में एंड्रॉइड एडिटटेक्स्ट बहुत व्यापक लगता है

enter image description here

यह एक अधिक उपयुक्त लग रहा है।

final Dao<Tag, Integer> tagDao = getHelper().getTagDao(); 

final EditText input = new EditText(this); 
input.setSingleLine(true); 
input.setHint(R.string.create_tag_dialog_hint); 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setView(input); 
builder.setTitle(getString(R.string.create_tag_dialog_title)); 
builder.setPositiveButton(
    getString(R.string.create_tag_dialog_positive), 
    new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      String value = input.getText().toString().trim(); 
      Toast.makeText(getApplicationContext(), value, Toast.LENGTH_SHORT).show(); 
      Tag tag = new Tag(value); 
      try { 
        tagDao.create(tag); 
      } catch (SQLException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
      } 
     } 
    }); 
builder.setNegativeButton(
    getString(R.string.create_tag_dialog_negative), null); 
builder.show(); 

पोस्ट और किसी भी उपयोगी टिप्पणी के लिए धन्यवाद की लंबाई के लिए क्षमा करें:

enter image description here

यहाँ मेरी कोड (जो पहले 'टैग बनाएं', संवाद बनाता है) है।

उत्तर

0

पर setPadding विधि का उपयोग करके कुछ पैडिंग सेट करने का प्रयास करें। इसे एडिटटेक्स्ट के किनारे और संवाद की सीमा के बीच एक अंतर जोड़ना चाहिए। एन

+1

पैडिंग दृश्य के अंदर चीजों पर लागू होता है, इसलिए 'EditText.setPadding()' 'EditText' के अंदर टेक्स्ट के चारों ओर स्थान बनाता है। मैंने '((देखें) input.getParent()) सेट किया है। SetPadding (10, 10, 10, 10)' builder.setView (इनपुट) 'के बाद, लेकिन इसके परिणामस्वरूप एक शून्य सूचक अपवाद हुआ। भले ही, मैं इसे 5px की व्यक्तिगत पसंद के लिए अनुकूलित करने का कोई तरीका नहीं ढूंढना चाहता हूं, या मैं एसडीके को इसे सही तरीके से प्रारूपित करने की अनुमति देना चाहता हूं। मुझे लगता है कि मैं एसडीके का गलत इस्तेमाल कर रहा हूं और इस प्रकार स्वरूपण सही नहीं दिखता है। – altendky

13

आप इस तरह यह कर सकते हैं:

LinearLayout layout = new LinearLayout(this); 
layout.setOrientation(LinearLayout.VERTICAL); 
layout.setGravity(Gravity.CENTER_HORIZONTAL); 
final EditText input = new EditText(this); 
input.setSingleLine(true); 
layout.setPadding(10, 0, 10, 0); 
input.setHint("Hint"); 
layout.addView(input); 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setView(layout); 

इसके अलावा, setSingleLine मान्य नहीं है। आपको InputStyle का उपयोग करना चाहिए।

+1

सिंगललाइन के बहिष्कार पर सिर के लिए धन्यवाद। वे दस्तावेज में हर जगह इसका जिक्र नहीं करते हैं। फिर भी, ऐसा प्रतीत नहीं होता है कि मुझे इसे ठीक करने के लिए कुछ पिक्सेल चुनना होगा। मैं मान रहा हूं कि वर्तमान परिणाम 'AlertDialog.builder' (या शायद यह पूरी तरह से गलत तकनीक है) के दुरुपयोग के कारण गलत है। – altendky

1

लेआउट मार्जिन बाएं और लेआउट मार्जिनराइट को 5sp पर सेट करें। मार्जिन दृश्य समूह के आस-पास की जगह सेट करता है। ViewGroup.MarginLayoutParams

+0

मुझे बिल्कुल यकीन नहीं है कि इसे कैसे लागू किया जाए ... लेकिन एसपी के बावजूद पीएक्स नहीं होने के बावजूद, यह अभी भी मनमाने ढंग से एंड्रॉइड को डिफ़ॉल्ट रिक्ति का उपयोग करने के बजाए कुछ अंतर निर्धारित करेगा। मैं अपने व्यक्तिगत वरीयता में लेआउट को समायोजित नहीं करना चाहता, मैं चाहता हूं कि एंड्रॉइड इसे अपनी वरीयता में करे। – altendky

30

पर एक नज़र डालें बस इसे स्वयं हल करें। AlertDialog के उदाहरण का उपयोग करके, आप setView निर्दिष्ट कर सकते हैं और अंतरण पैरामीटर में पास कर सकते हैं। यह काम करेगा।

final EditText input = new EditText(this); 

AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
alertDialog.setTitle("Title"); 
alertDialog.setMessage("Message"); 
alertDialog.setView(input, 10, 0, 10, 0); // 10 spacing, left and right 
alertDialog.setButton("OK", new OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // Clicked 
    } 
}); 
alertDialog.show(); 

संपादित करें: मुझे पता है कि यह प्रश्न पुराना है, लेकिन कोई समाधान प्रदान नहीं किया गया था।

+13

शीर्षलेख: 'alertDialog.setView (देखें, int, int, int, int);' नए एंड्रॉइड एपीआई संस्करणों में मौजूद नहीं है। –

+0

@ डेविडपैसमोर क्या आपके पास इस विधि के लिए कोई संभावित विकल्प हैं ?? – Rob

+1

@ डेविडपैसमोर नहीं, यह मौजूद है। कम से कम अगर आप एपकोपेट v7 AlertDialog का उपयोग कर रहे हैं – mobilepotato7

संबंधित मुद्दे