2012-06-03 15 views
16

में एक संपादन टेक्स्ट को कवर करता है मैंने एक साधारण परीक्षण प्रोजेक्ट को एक साथ फेंक दिया है जो एक पॉपअपविंडो को एक संपादन टेक्स्ट (एंड्रॉइड 2.2 पर) प्रदर्शित करता है। जब मैं एडिटटेक्स्ट टैप करता हूं, तो सॉफ्ट कीबोर्ड दिखाया जाता है, जैसा कि मैं उम्मीद करता हूं। हालांकि, मुलायम कीबोर्ड में एडिटटेक्स्ट को शामिल किया गया है, और मुझे संपादन टेक्स्ट को इस तरह से देखने के लिए पैन को पैन नहीं मिल सकता है जैसा मैंने सोचा था। मेरे कोड:सॉफ़्ट कीबोर्ड पॉपअपविंडो

TestAdjustPanActivity.java:

package com.example; 

import android.app.Activity; 
import android.graphics.drawable.BitmapDrawable; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.widget.PopupWindow; 

public class TestAdjustPanActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     final PopupWindow pw = new PopupWindow(this); 
     pw.setContentView(getLayoutInflater().inflate(R.layout.popup, null, false)); 
     pw.setWidth(400); 
     pw.setHeight(600); 
     pw.setFocusable(true); 

     pw.setOutsideTouchable(true); 
     pw.setTouchable(true); 
     pw.setBackgroundDrawable(new BitmapDrawable()); 

     // This is the line referred to in the edit: 
     pw.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

     findViewById(R.id.main).post(new Runnable() { 
      public void run() { 
      pw.showAtLocation(findViewById(R.id.main), Gravity.NO_GRAVITY, 0, 0); 
      } 
     }); 
    } 
} 

main.xml: शामिल

<?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="fill_parent" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#666666" 
     android:orientation="vertical" > 

     <EditText 
      android:id="@+id/current_password" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="40dp" 
      android:layout_marginLeft="10dp" 
      android:layout_marginRight="10dp" 
      android:layout_marginTop="300dp" /> 
    </LinearLayout> 

</ScrollView> 

... और मेरे AndroidManifest.xml करता है:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

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

</LinearLayout> 

popup.xml ऐप में एक और एकमात्र गतिविधि के लिए टैग में android:windowSoftInputMode="stateUnspecified|adjustPan" लाइन।

कोई भी विचार? इस मुद्दे से संबंधित SO पर किसी भी अन्य पोस्ट ने मेरे लिए यह नहीं किया है। मुझे क्या याद आ रहा है कि इस दृष्टिकोण को उस तरीके से पैन करने से रोक रहा है जिसकी मैं अपेक्षा करता हूं?

संपादित करें: मैंने टेस्टएडjustपैनएक्टिविटी में एक पंक्ति को इंगित करने की कोशिश की है, जिसने स्क्रीन को एंड्रॉइड 3.2 डिवाइस पर पूरी तरह से पैन करने का कारण बताया है। हालांकि, यह अभी भी मेरे एंड्रॉइड 2.2 डिवाइस पर पैन नहीं करता है, जो इसे और भी भ्रमित करता है।

उत्तर

4

भविष्य में इस पर ठोकर, मैं सिर्फ एक संवाद के बजाय एक PopupWindow का उपयोग कर समाप्त हो गया किसी को भी के लिए , और संपादन में टेक्स्ट को देखने के लिए पैनिंग एक संवाद के साथ 2.2 पर ठीक काम करता है।

0

आप बदलना चाहिए

android:windowSoftInputMode="stateUnspecified|adjustPan 

को
android:windowSoftInputMode="stateHidden|adjustPan" 
+0

मेह, दुर्भाग्य से कोई भाग्य नहीं। हालांकि धन्यवाद! – Lewis

3

वहाँ सरल तरीका है। सक्रिय कीबोर्ड के लिए बस वैकल्पिक लेआउट प्रदान करें।

  1. परियोजना पर लेफ्ट क्लिक का चयन करें: "एंड्रॉयड उपकरणों/नई संसाधन फ़ाइल ..."।
  2. चुस लेआउट, फ़ाइल का नाम "मुख्य" दें (विवादों के बारे में चिंता न करें)।
  3. "अगला" पर क्लिक करें। फिर बाईं ओर सूची में "कीबोर्ड" का चयन करें और इसे दाएं स्थान पर ले जाएं ("->" पर क्लिक करें)।
  4. दाहिने तरफ कीबोर्ड स्थिति का चयन करें।
  5. समाप्त क्लिक करें।
  6. अब res/layout-keyssoft में नई फ़ाइल में "res/layout" में स्थित अपने main.xml की सामग्री की प्रतिलिपि बनाएँ।
  7. इस तरह से नया लेआउट सही तरीके से करें कि कीबोर्ड इस तरह से नहीं है। उन दो लेआउट में संबंधित घटकों के लिए "आईडी" s (यही वजह है कि कॉपी पेस्ट की जरूरत थी)।
  8. का आनंद लें यह कैसे काम करता

को समझने के लिए यह कैसे काम करता configuration changes बारे में पढ़ें। ध्यान दें कि हर विन्यास परिवर्तन (उन्मुखीकरण परिवर्तन, भाषा परिवर्तन, ...) गतिविधि के मनोरंजन का कारण बन जाएगा (इस तरह के मामले में क्रेट की बहस शून्य नहीं है) ताकि आप अलग-अलग लेआउट प्रदान कर सकें ent मामलों

+0

एंड्रॉइड दस्तावेज़ों के मुताबिक, यह केवल तब काम करता है जब कीबोर्ड की वास्तविक उपलब्धता बदलती है, न कि जब इसे आसानी से दिखाया जाता है या छुपाया जाता है, दुर्भाग्यवश। हालांकि वे उल्लेख करते हैं कि कीबोर्ड कॉन्फ़िगरेशन क्लास की अधिकृत संपत्ति है, जिसे मैं देख लूंगा। धन्यवाद! – Lewis

1

मुझे शक समस्या क्योंकि का उपयोग कर कि ScrollViewXML में,

वहाँ, आप check all different answers there कर सकते हैं एक और समस्या इस के समान कर दिया गया है की है, और आप के लिए काम कर सकते हैं।

1

परिवर्तन इस

android:windowSoftInputMode="stateUnspecified|adjustPan" 

android:windowSoftInputMode="adjustPan" 
केवल अपने मैनिफ़ेस्ट फ़ाइल में

को