java द्वितीय टैप पर कीबोर्ड के द्वारा एंड्रॉइड संपादित टेक्स्ट




android android-edittext (6)

इसलिए मेरे पास एक संपादन टेक्स्ट है जो पहली बार कुंजीपटल द्वारा पहली बार कवर नहीं करता। तब जब आप कुंजीपटल बंद करते हैं और फिर एडिटेक्ट पर टैप करते हैं तो यह एडिटिक्स को कवर करता है

मैंने इस मुद्दे पर शोध करने में घंटे बिताए हैं और इस निष्कर्ष पर पहुंच गए हैं कि संपादन के टेक्स्ट के इन दो गुणों के साथ कुछ ऐसा है।

android:inputType="number"
android:gravity="center"

अगर मैं इनमें से किसी एक को समायोजित कर देता हूं तो (जैसा कि मेरे प्रकट में रखा गया है) हर बार वादा किया हुआ काम करता है। एक एंड्रॉइड बग होने लगता है लेकिन मुझे अपने संपादन टेक्स्ट में इन दोनों पंक्तियों की आवश्यकता है I इस समस्या को हल करने का सबसे अच्छा तरीका क्या है?

यहां एक्सएमएल का एक थोड़ा गाढ़ा संस्करण है:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true">


<LinearLayout
    android:id="@+id/buttons_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal"
    android:weightSum="5">

    <android.support.v7.widget.AppCompatButton
        android:id="@+id/generate_button"
        android:layout_width="match_parent"
        android:layout_height="@dimen/button_height"
        android:layout_marginBottom="@dimen/button_margin"
        android:layout_marginEnd="0dp"
        android:layout_marginLeft="@dimen/button_margin"
        android:layout_marginRight="0dp"
        android:layout_marginStart="@dimen/button_margin"
        android:layout_marginTop="@dimen/button_margin"
        android:layout_weight="1"
        android:background="@color/buttonColor"
        android:elevation="@dimen/button_elevation"
        android:foreground="?attr/selectableItemBackground"
        android:text="@string/generate"
        android:textColor="@color/colorPrimary"
        android:textSize="@dimen/generate_button_title_size"
        android:textStyle="bold" />

    <android.support.v7.widget.AppCompatImageButton
        android:id="@+id/copy_button"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="@dimen/button_margin"
        android:layout_weight="4"
        android:adjustViewBounds="true"
        android:background="@color/buttonColor"
        android:elevation="@dimen/button_elevation"
        android:foreground="?attr/selectableItemBackground"
        android:padding="@dimen/button_margin"
        android:scaleType="fitCenter"
        android:src="@drawable/ic_copy"
        android:tint="@color/colorPrimary" />

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@id/buttons_layout"
    android:orientation="vertical"
    android:weightSum="10">

    <GridLayout
        android:id="@+id/grid_layout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_weight="6"
        android:animateLayoutChanges="true">
    </GridLayout>


    <TextView
        android:id="@+id/total_text_view"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:gravity="center"
        android:text="11"
        android:textSize="@dimen/toolbar_title_size"
        android:textStyle="bold" />

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_gravity="center"
        android:layout_weight="2"
        android:textColorHint="@color/textColorHint">

        <EditText
            android:id="@+id/num_rolls_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:hint="@string/number_of_rolls"
            android:inputType="number"
            android:maxLength="@integer/edit_text_max_length"
            android:maxLines="1"
            android:text="4"
            android:textColor="@color/textColor"
            android:textSize="@dimen/edit_text_text_size"/>

    </android.support.design.widget.TextInputLayout>

</LinearLayout>

यह हर समय की तरह दिखना चाहिए ...

इस समय दूसरे टैप पर ऐसा दिखता है (कीबोर्ड को एडिटेक्ट कवर होता है) ...

संपादित करें: एंड्रॉइड 7.0 का उपयोग करते समय मैंने कीबोर्ड की खोज की है। मुझे नहीं लगता कि यह उस चीज़ के नीचे कुछ भी काम करता है क्या यह एक बग था जिसे हाल ही में तय किया गया था या कुछ?

साथ ही, मैंने एंड्रॉइड भी शामिल किया है: विंडोसाफ्टइनपुटमॉड = "समायोजन पिन | स्टेट हिडन" मेरे दोनों ऐप्लीकेशन और मेरे मैनिफेस्ट के गतिविधि के भाग में, लेकिन ऐसा ठीक नहीं लगता है।


गतिविधि के लिए अपने मैनिफेस्ट में इसे जोड़ें। यह बढ़िया काम करता है

 <activity android:name=".Views.UI.MainActivity"
        android:windowSoftInputMode="stateHidden|adjustResize">

अपने पहले स्क्रीनशॉट में पाठ "पासा" कंटऑफ़ है, दूसरे में, जहां संपादन टेक्स्ट को कवर किया गया है, "पासा" दिखाया गया है, शीर्षक संपादन टेस्ट "डाइस" को हटाने का विचार करें?

इसके अलावा मैं देखता हूं कि आपने AlignParentBottom उपयोग किया है और कहा है कि आप AlignParentBottom उपयोग कर सकते हैं, क्या आप layoutBelow साथ बदल सकते हैं?


alignParentBottom साथ alignParentBottom और कई विचार हमेशा समस्याग्रस्त है, विशेष रूप से कीबोर्ड के साथ मैं scrollview का उपयोग करने और LinearLayout भीतर विचार जोड़ने का सुझाव देता हूं, जहां बटन अंत में होंगे, लेकिन निश्चित रूप से दृश्य के नीचे नहीं।

तब आपको adjustPan का उपयोग करने की भी ज़रूरत नहीं है। कुछ इस तरह:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

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

    <!-- grid view + textview + textEdit + your buttons at the end -->

</LinearLayout>


इस कोड की जांच करें, नरम कीबोर्ड छुपाएं

 try {
        View view = this.getCurrentFocus();
        if (view != null) {
            InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

मुझे लगता है कि आप एक्सएलएल के अंदर स्क्रॉल व्यू का इस्तेमाल नहीं करते हैं, अगर आपने कुछ कोड एंड्रॉयड मेनफिस्ट बनाने की आवश्यकता की तुलना में ऐसा किया है <activity android:name=".activity.ActivityProductDetail" android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />


आप अपना लेआउट ScrollView में जोड़ सकते हैं और सुन सकते हैं onGloablLayout() कॉलबैक। यदि रूटव्यूव्यू और आपके दृश्य की ऊंचाई भिन्नता है> 100 पिक्सल शायद यह कीबोर्ड है और आप अपने EditText स्क्रॉल कर सकते हैं, इसलिए यह कुंजीपटल द्वारा अवरुद्ध नहीं है।

final View layout = findViewById(R.id.layoutparentID);
    layout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            int heightDiff = layout.getRootView().getHeight() - layout.getHeight();
            if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...

                final Runnable r = new Runnable() {
                    public void run() {
                        scrollView.smoothScrollTo(0, editText.getBottom());
                    }
                };
                activityRootView.getHandler().postDelayed(r, 100);
            }
        }
    });




keyboard