অ্যান্ড্রয়েড অন স্ক্রিন কীবোর্ড অটো পপিং আপ


140

আমার অ্যাপ্লিকেশনগুলির একটিতে একটি "খোলার স্ক্রিন" (মূলত একটি মেনু) রয়েছে যার EditTextপরে বেশ কয়েকটি Buttonএস রয়েছে। সমস্যাটি হ'ল আমার বেশিরভাগ ব্যবহারকারী এই প্রতিবেদন করছেন যে তারা অ্যাপটি খুললে এটি স্বয়ংক্রিয়ভাবে অন-স্ক্রীন কীবোর্ডটিকে পপও করে না EditText। আমি যতদূর বলতে পারি, এই ব্যবহারকারীরা সবাই এইচটিসি হিরো ব্যবহার করছেন ।

এটি কি 1.5 তে একটি বাগ আছে? এটি সম্পর্কে আমি কি কিছু করতে পারি?


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

দুর্ভাগ্যক্রমে হিরো এখানে ইউরোপে বড় সমস্যা রয়েছে, তারা বিল্ড সংখ্যার উপর নির্ভর করে পরিবর্তিত হয় তবে আমরা 3 - 4 টি বড় বাগ জুড়ে এসেছি।
ডোনাল রাফের্টি

উত্তর:


279

আপনি যখন ব্যবহারকারী কোনও সম্পাদনা পাঠ্যে ক্লিক করেন কেবল তখনই কীবোর্ড পপ হয় তা নিশ্চিত করার জন্য আপনি ক্রিয়াকলাপের অনক্রিট পদ্ধতিতে নিম্নলিখিত কোডের লাইনটি ব্যবহার করতে পারেন

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

এটি আমার পক্ষে কাজ করে না (২.২ মাই টাচ ৩ জি)। আমার অনক্রিয়েট () পদ্ধতিতে আমি সেটসোফট ইনপুটমড () কল করি। EditText এখনও শো :( কীবোর্ড ঘটায়
Nate

এটি আমার পক্ষে কাজ করেছে। আমি অ্যান্ড্রয়েড ২.৩.৪ চালাচ্ছি এবং <ব্যবহার-এসডিকে অ্যান্ড্রয়েড ব্যবহার করে বিকাশ করছি: minSdkVersion = "3" />
স্যান্ডি

78
বা এখানেandroid:windowSoftInputMode="stateHidden" যেমন ব্যবহার করুন
Swato

সুতরাং আমাকে বিভ্রান্ত করার বিষয়টি হ'ল আমার একটি লগইন ক্রিয়াকলাপ যা ইতিমধ্যে মনে হচ্ছে ঠিক মতো কীবোর্ডটি লুকিয়ে রেখেছে। আমি এখন একটি রেজিস্টার ক্রিয়াকলাপ তৈরি করেছি তবে কীবোর্ডটি ডিফল্টরূপে পপ আপ হচ্ছে। তাহলে লগইনটি কীভাবে এড়ানো হচ্ছে? আমি লগইন ক্রিয়াকলাপে সেটসফট ইনপুটমড বা ক্রিয়াকটি.এক্সএমএলে উইন্ডোসফট ইনপুটমোড বৈশিষ্ট্যটি খুঁজে পাচ্ছি না।
চকি

সর্বদা কাজ করে না: কিছু ডিভাইসে, SOFT_INPUT_STATE_ALWAYS_HIDDEN ত্রুটি সৃষ্টি করে যে কার্যকলাপে শেষ নয় এমন একটি সম্পাদনা পাঠ নরম কীবোর্ড প্রদর্শিত হতে পারে না। ম্যানিফেস্টে "অ্যান্ড্রয়েড: উইন্ডোসফটআইপুটমোড =" স্টেটহিডেন "" ব্যবহার করেও একই প্রভাব রয়েছে। বিকাশকারী ডক্স জানিয়েছে যে নরম কীবোর্ড বাধ্য না করা হলে তা স্বয়ংক্রিয়ভাবে উপস্থিত হবে না, তবে এটি কেবল সাধারণ ভুল।

85
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Main"
              android:label="@string/app_name"
              android:windowSoftInputMode="stateHidden"
              >

এটি অ্যান্ড্রয়েড 3.0.০, ৩.১, ৩.২, ৪.০ - এর জন্য কাজ করে যা সংকলন করতে ব্যবহৃত সম্পাদক (E.7 গ্রহণ)

আপনি যে সফ্টওয়্যার কীবোর্ডটি লুকিয়ে রাখতে চান তার জন্য আপনার অ্যাপ্লিকেশনটির প্রকাশিত এক্সএমএল ফাইলটিতে 'উইন্ডোসফটআইনপুটমড = "স্টেটহিডেন" "রাখুন This এর অর্থ কীবোর্ডটি স্বয়ংক্রিয়ভাবে উঠে আসবে না এবং ব্যবহারকারীকে একটিতে ক্লিক করতে হবে এটি আনতে পাঠ্য ক্ষেত্র। এমন কোনও কাজের জন্য আমি প্রায় এক ঘন্টা অনুসন্ধান করেছি যাতে আমি ভাবতাম যে আমি এটি ভাগ করব।


আমি এখনও অবধি সেরা সমাধান খুঁজে পেয়েছি। কীবোর্ডটি না খুলে ক্ষেত্রকে কেন্দ্র করে। 4.1.2
অ্যালেক্সিজোরিন

1
অ্যান্ড্রয়েড: উইন্ডোসফটআইনপুটমোড = "স্টেটহিডেন | অ্যাডজাস্টনিথিং" যদি আপনি টুকরোগুলি ব্যবহার করে থাকেন এবং আপনি কীবোর্ডটি বিন্যাসটি পরিবর্তন করতে চান না
3:53

6

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

android:windowSoftInputMode="stateHidden|adjustResize"

এটি পুরোপুরি কাজ করে। :)


1
উত্তরের জন্য ধন্যবাদ. আমি দুঃখিত, আমি এখন কী-বোর্ডটি কল করতে পারি? কল করার সময় এটি উপস্থিত হবে না requestFocus()
টেকেসি টোকুগাওয়া ওয়াইডি

6

এই কোডটি সমস্ত অ্যান্ড্রয়েড সংস্করণে কাজ করবে:

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

 //Automatic popping up keyboard on start Activity

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

 or

 //avoid automatically appear android keyboard when activity start
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
 }

কোনটি পপ আপ হয় এবং কোনটি হয় না তা বলার জন্য প্লাস 1
ডেমোন অ্যাপ প্রোগ্রামার

4

এক্সএমএল এর প্যারেন্ট লেআউটে এটি যুক্ত করুন।

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

এটি নিশ্চিত করে যে ক্রিয়াকলাপ শুরু হবে তখন ফোকাসটি সম্পাদনা পাঠ্যপুস্তকে নেই।


3

আপনি এটিকে ক্রিয়াকলাপের অনক্রিট () পদ্ধতিতে ব্যবহার করতে পারেন

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

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

android:windowSoftInputMode="stateVisible"

2
আমি মনে করি আপনি "স্টেটভিজিবল" এর পরিবর্তে "স্টেটহিডেন" অর্থ।
স্টিভেস

2

আপনি ক্রিয়াকলাপের অধীনে অ্যান্ড্রয়েড মেইনফেস্ট.এক্সএমএলে একক লাইন কোড যুক্ত করতে পারেন

 <activity
        android:name="com.sams.MainActivity"
        android:windowSoftInputMode="stateVisible" >
 </activity>

এটি আপনাকে সাহায্য করতে পারে।


1

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

এটি ঠিক করতে, স্পষ্টভাবে অন্য কোথাও ফোকাস সেট করুন। যদি এডিটেক্সট ব্যতীত অন্য কোনও কিছুতে ফোকাস সেট করা থাকে তবে অন-স্ক্রীন কীবোর্ড প্রদর্শিত হবে না।

আপনি এমুলেটরটিতে অ্যান্ড্রয়েড 1.5 রান করে এটি পরীক্ষা করার চেষ্টা করেছেন?


আমি এমুলেটরটিতে এটি চেষ্টা করেছি (এবং আমি পাগল ছিলাম না তা নিশ্চিত করার জন্য এটি কেবল আবার করেছি)। এটি "ডান" ব্যবহার করে (যার অর্থ কোনও কীবোর্ড পপ-আপ নয়)। এছাড়াও, যখন আমি মূলত এটি লিখেছিলাম আমার জি 1 1.5 চলছে এবং এটি এইভাবে কাজ করে না (যখন তারা কীবোর্ডটি "লুকানো" ছিল)।
জেরেমি লোগান

আমি এখনও বাজি ধরছি এটির প্রাথমিক ফোকাসের সাথে কিছু করার আছে। এটি এটি এইচটিসি হিরোর নির্দিষ্ট কিছু হতে পারে তবে আমি অন্য কিছুতে স্পষ্টভাবে ফোকাসটি সেট করার চেষ্টা করব এবং এটি আপনার ব্যবহারকারীদের জন্য এটি ঠিক করে কিনা তা দেখুন।
বি বি চিহ্নিত করুন

"কিছুই না" ফোকাস দেওয়ার কোনও উপায় আছে?
জেরেমি লোগান

1
এটি আমার পক্ষে কাজ করে না (২.২ মাই টাচ ৩ জি)। আমার অনক্রিয়েট () পদ্ধতিতে, আমি স্পষ্টভাবে একটি বোতামে অনুরোধফোকাস () কে কল করি, যা দেখার দ্বিতীয় উইজেট। EditText এখনও শো :( কীবোর্ড ঘটায়
Nate

1

আপনি প্রোগ্রামগতভাবে এটি করতে পারেন

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

বা ভিতরে সেট android:windowSoftInputMode="stateHidden"করা<activity tagAndroidManifest.xml


1

আমদানি শীর্ষে এটি অন্তর্ভুক্ত করুন:

import android.view.WindowManager;

অনক্রিয়েট অংশে এই কোডটি যুক্ত করুন:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ....
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
}

0
InputMethodManager imm = (InputMethodManager)GetSystemService(Context.InputMethodService);
        imm.ShowSoftInput(_enterPin.FindFocus(), 0);

* এটি অ্যান্ড্রয়েড.এক্সামারিন এবং ফাইন্ডফোকস () - এর জন্য এটি বর্তমানে এই দৃষ্টিভঙ্গিটির মূলক্রম অনুসারে এই অবস্থানটি অনুসন্ধান করে যা আমার উপরের কোডের আগে _enterPin.RequestFocus () রয়েছে সুতরাং এটি _enterPin সম্পাদনা পাঠের জন্য কীবোর্ড দেখায় *

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