2011-12-19 12 views
7

मेरे आवेदन में मेरे पास 2 प्रकार के संपादन क्षेत्र हैं। उनमें से एक एकल लाइन एडिटफील्ड की तरह व्यवहार करता है, दूसरा मल्टी-लाइन एडिटफील्ड (एडिटेरा) जैसा व्यवहार करता है। इस स्क्रीन में मेरे पास एक हेडर, एक एडिटफील्ड और एक एडिट्रिया है। जब मैं editfield पर कुछ पाठ दर्ज करता हूं, तो यह टेक्स्ट और कर्सर को क्लिप करता है। लेकिन, जब मैं editarea पर कुछ पाठ दर्ज करता हूं जिसमें एक पूंछ वर्ण (वाई, जी, क्यू, पी) editarea की ऊंचाई बदल रही है और editfield सामान्य कार्य करता है। अगर मैं पूंछ वर्णों में प्रवेश नहीं करता हूं तो स्ट्यूशन नहीं बदलता है।संपादन क्षेत्र अजीब ऊंचाई

यहाँ मेरी editarea वर्ग है:

public class EditAreaField extends HorizontalFieldManager{ 
    private net.rim.device.api.ui.component.EditField editArea; 
    public EditAreaField(){ 
     // some code; 
     editArea.setPadding(25, 10, 0, 10);  
    } 
    public int getPreferredHeight() { 
     int height = Math.max(editArea.getHeight(), textFont.getHeight()); 
     return height + editArea.getPaddingTop(); 
    } 
} 

label1 -> editfield

Label2 -> editarea

enter image description here enter image description here

+0

क्या आप संक्षेप में समझा सकते हैं? –

+0

अच्छी तरह से मैंने वास्तव में सवाल में समझाया। बाएं छवि में आप देख सकते हैं, एक क्लिपिंग समस्या है कर्सर का आधा पहले चरित्र पर है, इसका आधा अंतिम चरित्र पर है। यदि आप टाइप किए गए कुछ वर्ण टाइप करते हैं तो क्लिपिंग त्रुटि अब और नहीं है। –

+0

क्या आप यहां आ सकते हैं हम इस बारे में और अधिक चर्चा करेंगे http://chat.stackoverflow.com/rooms/4014/knowledge-sharing-center-for-blackberry-and-java –

उत्तर

1

इस वजह से आप बदलना आकार बना रहे हैं

का उपयोग करके
int height = Math.max(editArea.getHeight(), textFont.getHeight()); 

इसके बजाय कुछ निश्चित ऊंचाई देने की कोशिश करें। उदाहरण

height= Graphics.getScreenHeight()/5; 

के लिए या आप भी प्रबंधक

 protected void sublayout(int maxWidth, int maxHeight) 
      { 
       layoutChild(_editField, _editField.getPreferredWidth(), _editField.getPreferredHeight()); 
       setPositionChild(_editField, xpos,ypos); 
       setExtent(preferredHeight,preferredWidth); 
      } 

की sublayout विधि के अंदर setExtent उपयोग कर सकते हैं मुझे लगता है कि यह काम करेगा। कृपया मुझे पता

+0

एडिटफील्ड निश्चित आकार है लेकिन संपादन को ठीक नहीं किया जाना चाहिए क्योंकि हम नहीं जानते कि उपयोगकर्ता कितने अक्षर दर्ज करेगा। इसके अतिरिक्त मैंने कहा है कि आपने इसे ओवरराइड करके सब्बाउट विधि के अंदर सीमा निर्धारित की है। प्रारंभिक होने पर यह अजीब संपादन की ऊंचाई 38 है, जब उपयोगकर्ता पूंछ वाले पात्र डालता है तो यह 39 हो रहा है। मुझे लगता है कि समस्या है। –

1

बारे में कर्सर पेंटिंग करते हैं - आप को ओवरराइड drawFocus या/और onFocus या/और onUnfocus किया था और कुछ समय ठीक से फिर से रंगना नहीं है।

+0

मैं फोकस और ऑनफोकस पर ओवरराइड करता हूं। कस्टम घटक जो मैंने छवियों में एक ही स्क्रीन को जोड़ा है, अलग-अलग व्यवहार कर रहे हैं। अगर बाएं छवि पर कोई समस्या है, तो समस्या को सही छवि पर रहना होगा। समस्या का स्रोत संपादन संपादक है जो मुझे लगता है लेकिन मैं इसे हल करने में सक्षम नहीं हूं। –

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