ক্রিয়াকলাপ শুরু হলে কীভাবে সফ্ট কীবোর্ডটি আড়াল করবেন


151

android:windowSoftInputMode="stateVisible"ম্যানিফেস্টের সাথে আমার একটি সম্পাদনা রয়েছে । আমি যখন ক্রিয়াকলাপ শুরু করব তখন কীবোর্ডটি প্রদর্শিত হবে। কীভাবে আড়াল করবেন? আমি ব্যবহার করতে পারছি না android:windowSoftInputMode="stateHiddenকারণ যখন কীবোর্ড দৃশ্যমান হয় তখন অ্যাপটি ছোট করুন এবং এটি পুনরায় চালু করুন কীবোর্ডটি দৃশ্যমান হওয়া উচিত। আমি চেষ্টা করেছিলাম

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);

তবে এটি কার্যকর হয়নি।

উত্তর:


1

আপনি যদি এক্সএমএল ব্যবহার করতে না চান তবে কীবোর্ডটি লুকানোর জন্য একটি কোটলিন এক্সটেনশন করুন

// In onResume, call this
myView.hideKeyboard()

fun View.hideKeyboard() {
    val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.hideSoftInputFromWindow(windowToken, 0)
}

ব্যবহারের ক্ষেত্রে ভিত্তিক বিকল্পগুলি:

fun Fragment.hideKeyboard() {
    view?.let { activity?.hideKeyboard(it) }
}

fun Activity.hideKeyboard() {
    // Calls Context.hideKeyboard
    hideKeyboard(currentFocus ?: View(this))
}

fun Context.hideKeyboard(view: View) {
    view.hideKeyboard()
}

কিভাবে দেন নরম কীবোর্ড

fun Context.showKeyboard() { // Or View.showKeyboard()
    val inputMethodManager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
    inputMethodManager.toggleSoftInput(SHOW_FORCED, HIDE_IMPLICIT_ONLY)
}

একসাথে একটি সম্পাদনা পাঠ্যের উপর ফোকাসের অনুরোধ করার সময় সহজ পদ্ধতি

myEdittext.focus()

fun View.focus() {
    requestFocus()
    showKeyboard()
}

বোনাস সরলীকরণ:

সর্বদা ব্যবহারের জন্য প্রয়োজনীয়তা সরান getSystemService: স্প্লিটটিস লাইব্রেরি

// Simplifies above solution to just
inputMethodManager.hideSoftInputFromWindow(windowToken, 0)

361

ইন AndroidManifest.xml:

<activity android:name="com.your.package.ActivityName"
          android:windowSoftInputMode="stateHidden"  />

বা চেষ্টা করুন

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)‌​;

দয়া করে চেক করুন এই এছাড়াও


3
ধন্যবাদ android:windowSoftInputMode="stateHidden"
শৈলেন্দ্র মাদদা 9'16

2
আসলে সেখানে প্রতিরোধ সম্পাদন করা টেক্সট উপর নিকটতর নিবদ্ধ উপর মহান উত্তর stackoverflow.com/questions/4668210/...
বরিস Treukhov

204

কীবোর্ডটি দেখানোর / আড়াল করতে নিম্নলিখিত ফাংশনগুলি ব্যবহার করুন:

/**
 * Hides the soft keyboard
 */
public void hideSoftKeyboard() {
    if(getCurrentFocus()!=null) {
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
    }
}

/**
 * Shows the soft keyboard
 */
public void showSoftKeyboard(View view) {
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
    view.requestFocus();
    inputMethodManager.showSoftInput(view, 0);
}

4
প্রবন্ধ।আনাদের জন্য যারা খণ্ডে পড়েছেন বা মূল ক্রিয়াকলাপে নেই তাদের জন্য- INPUT_METHOD_SERVICE
অলিভার ডিকসন

7
আপনি এটি চেষ্টা করতে পারেন। আপনি যদি এটিকে কার্যকলাপ থেকে কল করেন তবে এটি কাজ করে। । getWindow () setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
সিনান ডিজদারেćć

আমাদের যদি কোনও শ্রোতার মধ্যে থেকে এটি কল করার প্রয়োজন হয় তবে কী হবে? লাইকonFocusChange()
আন্দ্রে ইউহাই

44

সম্পাদনা পাঠের পিতামাতার ভিউতে কেবল দুটি বৈশিষ্ট্য যুক্ত করুন।

android:focusable="true"
android:focusableInTouchMode="true"

36

এটিকে ক্রিয়াকলাপের ট্যাগের মধ্যে ম্যানিফেস্টে রাখুন

  android:windowSoftInputMode="stateHidden"  

বা অ্যান্ড্রয়েড: উইন্ডোসফটআইনপুটমোড = "stateUnchanged" - এটি এর মতো কাজ করে: এটি ইতিমধ্যে প্রদর্শিত না হলে এটি দেখাবেন না, তবে যদি কার্যকলাপে প্রবেশের সময় এটি খোলা থাকে তবে এটি খোলা রাখুন)।
সুজিৎ কুমার গুপ্ত

হ্যাঁ আপনি ঠিক বলেছেন। তবে কি যদি ওরিয়েন্টেশন বদলে যায়?
সনিশ

26

এটা চেষ্টা কর:

<activity
    ...
    android:windowSoftInputMode="stateHidden|adjustResize"
    ...
>

তাকান এই আরো বিস্তারিত জানার জন্য।


14

নিউ কার্যকলাপ শুরু বা সময় softkeyboard লুকানোর জন্য onCreate(), onStart()ইত্যাদি আপনি নিচের কোড ব্যবহার করতে পারেন:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

10

অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ব্যবহার করা

<activity android:name=".YourActivityName"
      android:windowSoftInputMode="stateHidden"  
 />

জাভা ব্যবহার করা

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

অ্যাক্টিআই তৈরি হওয়ার সময় উপরের সমাধান কীবোর্ড হাইড কিন্তু এডিটেক্সট ফোকাস নেওয়া থেকে ব্যবহার করে, তবে আপনি যখন এগুলি ব্যবহার করে স্পর্শ করেন তখন এটিকে ধরুন:

আপনার সম্পাদনা পাঠ্য যুক্ত করুন

<EditText
android:focusable="false" />

আপনার সম্পাদনা পাঠের শ্রোতাদেরও যুক্ত করুন

youredittext.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
    v.setFocusable(true);
    v.setFocusableInTouchMode(true);
    return false;
}});

7

আপনার এক্সএমএল ফাইলে নিম্নলিখিত পাঠ্য যুক্ত করুন।

<!--Dummy layout that gain focus -->
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:orientation="vertical" >
            </LinearLayout>

6

আমি আশা করি এটি কার্যকর হবে, আমি প্রচুর পদ্ধতির চেষ্টা করেছি তবে এটি আমার জন্য কাজ করেছে fragments। স্রেফ এই লাইনটি onCreateview / init এ দিন।

getActivity().getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

5

নতুন ক্রিয়াকলাপ শুরু হওয়ার সময় বা অনক্রিট (), অন স্টার্ট () পদ্ধতি ইত্যাদির সময় সফটকিবোর্ডটি আড়াল করতে নীচের কোডটি ব্যবহার করুন:

getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);

বোতামের সময় সফটকিবোর্ডটি লুকানোর জন্য ক্রিয়াকলাপে ক্লিক করা হয়:

View view = this.getCurrentFocus();

    if (view != null) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        assert imm != null;
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }

5

SOFT_INPUT_STATE_HIDDEN এর পরিবর্তে SOFT_INPUT_STATE_ALWAYS_HIDDEN ব্যবহার করুন

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

5

এই সম্পত্তিটি প্রকাশ করে আপনার ক্রিয়াকলাপে যুক্ত করুন

android:windowSoftInputMode="stateHidden" 

4

এই কোডটি আপনার জাভা ফাইলটি রাখুন এবং সম্পাদনা পাঠ্যের উপরে অবজেক্টের পক্ষে যুক্তিটি পাস করুন,

private void setHideSoftKeyboard(EditText editText){
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}

4

আপনি অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল এ কনফিগার করতে পারেন

উদাহরণ:

<activity
    android:name="Activity"
    android:configChanges="orientation|keyboardHidden"
    android:theme="@*android:style/Theme.NoTitleBar"
    android:launchMode="singleTop"
    android:windowSoftInputMode="stateHidden"/>

4

আপনি যখন ক্রিয়াকলাপ শুরু করবেন প্রথমবার সফটকিবোর্ডটি লুকানোর জন্য নিম্নলিখিত কোডটি ব্যবহার করুন

getActivity().getWindow().setSoftInputMode(WindowManager.
LayoutParams.SOFT_INPUT_STATE_HIDDEN);

3

এটিও চেষ্টা করে দেখুন

Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);

Ed_Cat_Search.setInputType(InputType.TYPE_NULL);

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
        Ed_Cat_Search.onTouchEvent(event); // call native handler
        return true; // consume touch even
    }
});

3

উপরের উত্তরগুলিও সঠিক। আমি কেবল একটি সংক্ষিপ্ত বিবরণ দিতে চাই যে ক্রিয়াকলাপটি শুরু করার সময় কীবোর্ডটি লুকানোর দুটি উপায় আছে ম্যানিফেস্ট.এক্সএমএল থেকে। উদাহরণ:

<activity
..........
android:windowSoftInputMode="stateHidden"
..........
/>
  • ক্রিয়াকলাপে প্রবেশের সময় উপরের উপায়ে সর্বদা এটি লুকান।

অথবা

<activity
..........
android:windowSoftInputMode="stateUnchanged"
..........
/>
  • এটির একজন বলেছে এটি পরিবর্তন করবেন না (যেমন এটি ইতিমধ্যে প্রদর্শিত না হলে এটি দেখাবেন না, তবে ক্রিয়াকলাপে প্রবেশের সময় এটি যদি খোলা থাকে তবে এটি খুলুন)।

2

এটি আমিই করেছি:

yourEditText.setCursorVisible(false); //This code is used when you do not want the cursor to be visible at startup
        yourEditText.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                v.onTouchEvent(event);   // handle the event first
                InputMethodManager imm = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null) {

                    imm.hideSoftInputFromWindow(v.getWindowToken(), 0);  // hide the soft keyboard
                    yourEditText.setCursorVisible(true); //This is to display cursor when upon onTouch of Edittext
                }
                return true;
            }
        });

2

যদি আপনার অ্যাপ্লিকেশনটি অ্যান্ড্রয়েড এপিআই লেভেল 21 বা তার চেয়ে বেশি ডিফল্ট পদ্ধতি উপলভ্য করে থাকে।

editTextObj.setShowSoftInputOnFocus(false);

আপনি EditTextXML ট্যাগে কোড নীচে সেট করেছেন তা নিশ্চিত করুন ।

<EditText  
    ....
    android:enabled="true"
    android:focusable="true" />

1

এটা চেষ্টা কর.

আপনার অনুসন্ধানযোগ্য এক্সএমএল প্রথমে ক্ষেত্রগুলি (নাম এবং ইঙ্গিত ইত্যাদি) লিখুন @stringএবং আক্ষরিক স্ট্রিং নয়।

তারপরে পদ্ধতিটি onCreateOptionsMenu, এটিতে ComponentNameআপনার প্যাকেজটির নাম এবং আপনার সম্পূর্ণ শ্রেণীর নাম (প্যাকেজের নাম সহ) থাকতে হবে - যে ক্রিয়াকলাপটিতে SearchViewউপাদান রয়েছে সেই ক্ষেত্রে অনুসন্ধান ফলাফলগুলি ব্যবহারের মতোই হবেgetComponentName() গুগল অ্যান্ড্রয়েড বিকাশকারী যেমন বলেছেন ততক্ষেত্রের মতোই।

আমি অনেকগুলি সমাধানের চেষ্টা করেছি এবং অনেক পরে, এই সমাধানটি আমার পক্ষে কাজ করে।


1
Ed_Cat_Search = (EditText) findViewById(R.id.editText_Searc_Categories);

Ed_Cat_Search.setInputType(InputType.TYPE_NULL);

Ed_Cat_Search.setOnTouchListener(new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        Ed_Cat_Search.setInputType(InputType.TYPE_CLASS_TEXT);
        Ed_Cat_Search.onTouchEvent(event); // call native handler
        return true; // consume touch even
    }
});

this one worked for me

1
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

এটা কাজ করবে


এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে সে সম্পর্কে অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
রোলস্টুহল্ফাহাহার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.