2009-01-20 14 views
14

मेरे पास एक ऐसा एप्लिकेशन है जिसमें पोर्ट्रेट का प्राथमिक लेआउट है (इसे पोर्ट्रेट के रूप में तय किया गया है), और पाठ में टाइप करने के लिए एक जगह है। मैं पृष्ठभूमि छवि के साथ लैंडस्केप ओरिएंटेशन में पॉपअप विंडो की तरह लॉन्च करना चाहता हूं। मुझे पता है कि पॉपअप विजेट है, लेकिन टेक्स्ट एडिट बॉक्स को घुमाने के लिए कोई भी विचार बहुत अच्छा होगा। कुंजीपटल स्लीड आउट होने पर इसे पोर्ट्रेट व्यू (केवल टेक्स्ट बॉक्स) में घुमाएं, जैसा कि कीबोर्ड स्लाइड पर टेक्स्ट बॉक्स के साथ एक नई स्क्रीन दिखाएगा।स्क्रीन पर "संपादन" टेक्स्ट टेक्स्ट बॉक्स कैसे दिखाना है?

उत्तर

37

आपकी समस्या का सबसे आसान समाधान अपने EditText को अलग-अलग dialog थीम्ड गतिविधि के भीतर प्रदर्शित करना है जिसे आपने अपनी मुख्य (चित्र-निर्धारित) गतिविधि से लॉन्च किया है।

एडिटटेक्स्ट गतिविधि में इसका अभिविन्यास तय नहीं होना चाहिए, इसलिए जब आप कीबोर्ड को स्लाइड करते हैं तो यह घुमाएगा।

पाठ प्रविष्टि गतिविधि

एक नई गतिविधि और कुछ और आप शामिल करना चाहते केवल EditText देखें शामिल बनाएं (शायद ठीक/रद्द करें बटन और शायद एक लेबल?) बना रहा है। मेनिफेस्ट के भीतर इसकी थीम Theme.Dialog पर सेट करें।

<activity android:name="TextEntryActivity" 
      android:label="My Activity" 
      android:theme="@android:style/Theme.Dialog"/> 

फॉगिंग या एक संवाद के पीछे क्रियाएँ धुंधला अग्रभूमि गतिविधि की खिड़की गुण (अपने पाठ प्रविष्टि संवाद) को संशोधित करके किया जाता है। इसके भीतर किसी भी पृष्ठभूमि क्रियाकलापों को धुंधला करने के लिए क्रिएट विधि getWindow().setFlags का उपयोग करें।

getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, 
        WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 

शुभारंभ और पढ़ना पाठ प्रविष्टि गतिविधि शुरू करने के लिए उपयोग startActivityForResult पाठ प्रविष्टि की गतिविधि से

दर्ज किए गए मानों। उस गतिविधि के भीतर setResultthis post में वर्णित तकनीकों का उपयोग करके लौटाए गए इरादे में दर्ज पाठ स्ट्रिंग को वापस करने के लिए कॉल करें।

उप गतिविधि से परिणाम सुनने के लिए onActivityResult विधि को ओवरराइड करें। कीबोर्ड पर

ट्रिगर लॉन्च उजागर

आप पाठ प्रविष्टि गतिविधि शुरू कर सकते हैं जब भी आप चाहते हैं, लेकिन आप इस घटना को स्पष्ट रूप पर कब्जा कर सकते हैं यदि आप हमेशा यह प्रदर्शित करने के लिए जब कुंजीपटल सामने आ रहा है चाहता हूँ।

पोर्ट्रेट गतिविधि की मैनिफेस्ट प्रविष्टि में android:configChanges विशेषता जोड़कर प्रारंभ करें। इसे keyboardHidden सुनने के लिए पंजीकृत होना चाहिए।

android:configChanges="keyboardHidden" 

कि गतिविधि के भीतर, onConfigurationChanged पाठ प्रविष्टि गतिविधि शुरू करने के लिए ओवरराइड।

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    Intent i = new Intent(this,TextEntryActivity.class);  
    startActivityForResult(i, STATIC_INTEGER_VALUE); 
} 

आप (बजाय छिपा हुआ) पुष्टि करने के लिए कुंजीपटल अवगत कराया जा रहा है पाठ प्रविष्टि गतिविधि शुरू करने से पहले newConfig चर का उपयोग कर जाँच कर सकते हैं।

कीबोर्ड कीबोर्ड छुपाए जाने पर आप पाठ प्रविष्टि गतिविधि से स्वचालित रूप से वापस लौटने के लिए उसी तकनीक का उपयोग करना चाह सकते हैं।

+0

आपकी अंतर्दृष्टि के लिए धन्यवाद। – Chrispix

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