ক্রিয়াকলাপ শুরু হওয়ার পরে স্বয়ংক্রিয় পপিং কীবোর্ড


99

I got a relative simple question. I have an activity with a lot of EditText's in them. When I open the activity it automatically focusses to the first EditText and displays the virtual keyboard.

আমি কীভাবে এটি প্রতিরোধ করতে পারি?


Check my answer on this question stackoverflow.com/questions/39593324/…
Android Help

When My App is Launch (open) and if edit text view is Available so, keyboard is Automatic (show) enable. How to sole this problem click here easycomacademy.com/…
AhmadUllah Ahmad

উত্তর:


210

Use this attributes in your layout tag in XML file:

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

মতামত হিসাবে অন্যান্য সদস্যদের দ্বারা রিপোর্ট হিসাবে এটি কাজ করে না ScrollViewতাই আপনার প্রধান বৈশিষ্ট্য এই বৈশিষ্ট্য যুক্ত করা প্রয়োজন ScrollView


4
এটি আমার সমস্যাটিকেও ঠিক করে দিয়েছে। আমি আমার ক্রিয়াকলাপের জন্য এটি রিলেটিভলআউট ট্যাগে যুক্ত করেছি। ধন্যবাদ!
লুক

21
আকর্ষণীয়ভাবে যথেষ্ট, আমি যখন উপরের স্ক্রোলভিউতে যুক্ত করেছিলাম তখন এটি কাজ করে না, তবে এটি লিনিয়ারলাউট
জেরি ব্র্যাডি

4
আমি মনে করি আপনাকে এটি শীর্ষস্থানীয় বিন্যাসে রাখতে হবে
উত্সব গুপ্ত

সুতরাং আমি অনুমান করি যে এটি কাজ করে কারণ আপনি নিজেই লেআউটটি বলছেন যে এটির ফোকাস থাকতে পারে? অন্যথায় এটি ধরে নেওয়া হয় যে ফর্মের প্রথম নিয়ন্ত্রণকে ফোকাস দেওয়া দরকার? অদ্ভুতভাবে যথেষ্ট, আমার ফর্মের সমস্ত নিয়ন্ত্রণ অক্ষম করা থাকলেও আমি কীবোর্ডটি পাচ্ছিলাম। এখনই স্থির। ধন্যবাদ!
কঙ্গোম্বম্বম্ব

4
এটি দ্রষ্টব্য গুরুত্বপূর্ণ যে এই সমাধানটি অ্যাক্সেসযোগ্যতার সমস্যা তৈরি করে (এমন দৃষ্টিভঙ্গি যা ফোকাস হিসাবে চিহ্নিত হিসাবে চিহ্নিত করা উচিত নয়) এবং অনিচ্ছাকৃত পরিণতি হতে পারে।
রেনাটো

97

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

android:windowSoftInputMode="stateHidden|adjustResize"

এটি কাজ করে তবে আপনার যদি চিত্রের পটভূমি থাকে এবং আপনার নরম কীবোর্ড এই জাতীয় চিত্রের পটভূমি সঙ্কুচিত করার বিষয়ে উদ্বিগ্ন হন, ব্যবহার করুনandroid:windowSoftInputMode="stateHidden|adjustPan"
ArtiomLK

31

আমি এখানে বর্ণিত বেশ কয়েকটি বাস্তবায়ন করেছি, তবে এখন আমি AndroidManifest.xmlআমার Activityসম্পত্তিটির জন্য যুক্ত করেছি :

android:windowSoftInputMode="stateAlwaysHidden"

আমি মনে করি এটি ব্যবহার করার পরেও এটি সহজ উপায় fragments

" stateAlwaysHided " ক্রিয়াকলাপের মূল উইন্ডোতে ইনপুট ফোকাস থাকলে নরম কীবোর্ড সর্বদা লুকিয়ে থাকে।


এটি আমার জন্য একটি স্ক্রোলভিউ এবং একটি রিলেটিভলআউট উভয়ের জন্যই কাজ করেছিল।
iversoncru

এটি টুকরো টুকরো জন্য এতটা দুর্দান্ত নয়, যেহেতু আপনি "গোপনীয় অবস্থা" ক্রিয়াকলাপের সাথে সংযুক্ত করছেন যা আপনার সমস্ত টুকরোগুলি ধারণ করবে, যার অর্থ আপনি ক্রিয়াকলাপে প্রদর্শিত যে কোনও খণ্ড সম্পত্তির দ্বারা প্রভাবিত হবেন (প্রতি খণ্ডে "নয় "ভিত্তি)।
পেলপোট্রনিক

11

এর মতো আপনার ক্রিয়াকলাপে আপনার যদি অন্য মতামত থাকে তবে ListViewআপনি এটি করতেও পারেন:

ListView.requestFocus(); 

এ থেকে ফোকাস দখল করতে আপনার অনারিউম () এ editText

আমি জানি এই প্রশ্নের উত্তর দেওয়া হয়েছে তবে কেবলমাত্র একটি বিকল্প সমাধান প্রদান করা যা আমার পক্ষে কাজ করেছে :)



4

আপনার ক্রিয়াকলাপের কোডগুলিতে এটি ব্যবহার করুন:

@Override
public void onCreate(Bundle savedInstanceState) {

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

}

এটি আমার পক্ষে কাজ করে না - আমি আমার ক্রিয়াকলাপ শুরু করার পরে কীবোর্ডটি পপ আপ হয়।
ডেভিড ডরিয়া

আপনি এই লিঙ্কটি চেক করতে পারেন, এটি কাজ করবে: stackoverflow.com/questions/18977187/…
সুজিত কুমার গুপ্ত

3

ট্যাবগুলিতে স্যুইচ করার সময়ও কীবোর্ডটি স্বয়ংক্রিয়ভাবে পপ আপ হয়ে গেছে এবং ট্যাবলেটে অ্যান্ড্রয়েড 3..২.১ রেখেছিল, এমন সময়ও আমার একটি সমস্যা ছিল। নিম্নলিখিত পদ্ধতিটি ব্যবহার করুন:

public void setEditTextFocus(EditText searchEditText, boolean isFocused)
{
    searchEditText.setCursorVisible(isFocused);
    searchEditText.setFocusable(isFocused);
    searchEditText.setFocusableInTouchMode(isFocused);
    if (isFocused) {
        searchEditText.requestFocus();
    } else {
        InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
        inputManager.hideSoftInputFromWindow(searchEditText.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS );
    }
}   

প্রতিটি সম্পাদনা পাঠের ক্রিয়াকলাপের অনক্রিট () এবং অনপজ () এ:

setEditTextFocus (myEditText, মিথ্যা);

প্রতিটি সম্পাদনা পাঠানোর জন্য একটি অন-টাচলিস্টনার:

    myEditText.setOnTouchListener(new EditText.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            setEditTextFocus(myEditText, true); 
            return false;
        }
    });

প্রত্যেকের EditTextজন্য OnEditorActionListener:

    myEditText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
                            .......
            setEditTextFocus(myEditText, false); 
            return false;
        }
    });

আর প্রত্যেকের জন্য EditTextlayout xml:

            android:imeOptions="actionDone"
            android:inputType="numberDecimal|numberSigned" // Or something else

সম্ভবত আরও কোড অনুকূলিতকরণ সম্ভব possible


3
((InputMethodManager)getActivity().getSystemService("input_method")).hideSoftInputFromWindow(this.edittxt.getWindowToken(), 0);

খণ্ড ব্যবহার করে ..এই কোডটি কীবোর্ডটি লুকানোর জন্য কাজ করে ... যখন কোনও খণ্ড খোলা থাকে তখন সম্পাদনা ক্ষেত্র কীবোর্ডের উপর দৃষ্টি নিবদ্ধ করা এড়ানো ...
শ্রীলাল এস

2

আমি এই সহজ সমাধানটি পেয়েছি যা আমার পক্ষে কাজ করেছে your আপনার প্যারেন্ট লেআউটে এই বৈশিষ্ট্যগুলি সেট করুন:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true" >

এবং এখন, যখন ক্রিয়াকলাপ শুরু হবে তখন এই মূল বিন্যাসটি ডিফল্টরূপে ফোকাস পাবে।

এছাড়াও, আমরা আবার মূল বিন্যাসে ফোকাসটি দিয়ে রানটাইমের সময় শিশুদের দৃষ্টিভঙ্গি থেকে ফোকাস সরিয়ে দিতে পারি:

findViewById(R.id.mainLayout).requestFocus();

আশা করি এটি আপনার পক্ষে কাজ করবে।


1

এই সমাধানটি আমি ব্যবহার করছি, এটি সেরা সমাধান নয় তবে এটি আমার পক্ষে ভালভাবে কাজ করছে

 editComment.setFocusableInTouchMode(false);
 editComment.setOnTouchListener(new OnTouchListener(){

                @Override
                public boolean onTouch(View v, MotionEvent event)
                {
                    // TODO Auto-generated method stub
                    editComment.setFocusableInTouchMode(true);
                     editComment.requestFocus() ;
                    return false;
                }});

1

মজার বিষয় হচ্ছে এই ডকুমেন্টেশনটি https://developer.android.com/training/keyboard-input/visibility.html উল্লেখ করেছে যে যখন কোনও কার্যকলাপ শুরু হয় এবং একটি পাঠ্য ক্ষেত্রে মনোনিবেশ দেওয়া হয়, তখন নরম কীবোর্ডটি প্রদর্শিত হয় না (এবং তারপরে চলে যায় আপনি যদি কিছু কোড সহ চান তবে কী-বোর্ডটি কীভাবে প্রদর্শিত হবে তা আপনাকে দেখায়)।

আমার স্যামসং গ্যালাক্সি এস 5 এ, আমার অ্যাপটি (কোনও ম্যানিফেস্ট এন্ট্রি বা নির্দিষ্ট কোড সহ) এইভাবে কাজ করে - কোনও সফ্ট কীবোর্ড নেই। তবে ললিপপ এভিডিতে একটি নরম কীবোর্ড দেখানো হয়েছে - উপরে বর্ণিত ডকটির বিপরীতে।

কোনও এভিডি পরীক্ষার সময় আপনি যদি এই আচরণটি পান তবে কী ঘটবে তা দেখতে আপনি কোনও বাস্তব ডিভাইসে পরীক্ষা করতে চাইতে পারেন।


1

নিম্নলিখিত পোস্টে এটির বেশ কয়েকটি ভাল উত্তর রয়েছে: ক্রিয়াকলাপের সূচনাকালীন ফোকাস অর্জন থেকে সম্পাদনা পাঠানো বন্ধ করুন । আমি নিয়মিত যা ব্যবহার করি তা হল মরগানের নিম্নলিখিত কোডগুলি :

<!-- Dummy item to prevent AutoCompleteTextView from receiving focus -->
<LinearLayout
    android:focusable="true" 
    android:focusableInTouchMode="true"
    android:layout_width="0px" 
    android:layout_height="0px"/>

<!-- :nextFocusUp and :nextFocusLeft have been set to the id of this component
to prevent the dummy from receiving focus again -->
<AutoCompleteTextView android:id="@+id/autotext"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:nextFocusUp="@id/autotext"     
    android:nextFocusLeft="@id/autotext"/>

দ্রষ্টব্য: ডামি আইটেমটিকে ফোকাসযোগ্য উপাদানগুলির আগে সঠিকভাবে স্থান দেওয়া উচিত।

এবং আমি মনে করি এটি এমনকি স্ক্রোলভিউয়ের সাথে নিখুঁতভাবে কাজ করা উচিত এবং এর জন্য অ্যাক্সেসযোগ্যতায় কোনও সমস্যা হয়নি।


0

আপনার এডিটেক্সটটি স্বয়ংক্রিয়ভাবে ফোকাস হয়ে যায় যখন আপনার কার্যকলাপ শুরু হয় This এটিকে ঠিক করার একটি সহজ ও স্থিতিশীল উপায় হ'ল প্রাথমিক ফোকাসটিকে অন্য কোনও ভিউতে যেমন একটি বাটন ইত্যাদি হিসাবে সেট করা simply

আপনি আপনার লেআউট এক্সএমএলে এটি করতে পারেন, কোনও কোডের প্রয়োজন নেই ..


0

স্বীকৃত উত্তর আমার পক্ষে কাজ করছে না, সে কারণেই উত্তরটি কার্যকর সমাধান দিন, এটি সহায়ক হতে পারে!

EditText edt = (EditText) findViewById(R.id.edt);
edt.requestFocus();    
edt.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0));
edt.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));

এখন কীবোর্ড খোলা আছে আনন্দ :)


প্রশ্নটি কী-বোর্ডটি খোলার থেকে আটকাতে হবে তা ছিল ।
jk7


0

আপনার ক্রিয়াকলাপের XML শীর্ষে কোডটি নীচে যুক্ত করুন এবং নিশ্চিত করুন যে দেখুনটি সম্পাদনা পাঠের উপরে রয়েছে

<View 
android:layout_width="0dp"
android:layout_height="0dp"
android:focusableInTouchMode="true"/>

0

android:focusableInTouchMode="true"

এর উপরের লাইনটির এক্সএমএলে যোগ করুন EditTextবা TextInputLayoutযার ফোকাস রয়েছে এবং এর কারণ ঘটছেsoftInputKeyboard

এটি আমাদের জন্য সমস্যার সমাধান করে এবং এখন কীবোর্ড পপআপ করে না


0

অনুসন্ধান_পরিচালিত_পাঠ্য = (সম্পাদনা পাঠ্য) FindViewById (R.id.search_edit_text);

    search_edit_text.requestFocus();
    search_edit_text.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0));
    search_edit_text.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));

এটি আমার জন্য কাজ করে ছেলেরা খণ্ডে কিছু আলাদা সিনট্যাক্স থাকতে পারে। কার্যকলাপের জন্য এই কাজ করে


আপনার উত্তরে আপনাকে কোনও সীমাবদ্ধতা, অনুমান বা সরলিকরণ সরবরাহ করতে হবে। এই লিঙ্কটিতে কীভাবে উত্তর দেবেন সে সম্পর্কে আরও বিশদ দেখুন: stackoverflow.com/help/how-to-answer
উসামা আব্দুলরেহমান

-1

যদি আপনার ভিউতে এডিটেক্সট এবং তালিকাভিউ থাকে তবে কীবোর্ডটি ডিফল্টরূপে খোলে। ডিফল্ট পপ আপ থেকে কীবোর্ড আড়াল করতে নিম্নলিখিতটি করুন

this.listView.requestFocus();

নিশ্চিত হয়ে নিন যে আপনি সম্পাদনা পাঠের জন্য ভিউ পাওয়ার পরে তালিকাগুলিতে ফোকাসের অনুরোধ করছেন।

যেমন যেমন

this.listView = (ListView) this.findViewById(R.id.list);
this.editTextSearch = (EditText) this.findViewById(R.id.editTextSearch);
this.listView.requestFocus();

আপনি যদি এটি করেন, তবে সম্পাদনা পাঠ্য ফোকাস পাবেন এবং কীবোর্ড পপ আপ হবে।


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