অ্যান্ড্রয়েড সফ্ট কীবোর্ড এডিটেক্সট ফিল্ডটি কভার করে


উত্তর:


163

আপনি কি জিজ্ঞাসা করছেন নরম কীবোর্ড খোলার সময় কী দৃশ্যমান তা নিয়ন্ত্রণ করতে? আপনি উইন্ডো সফট ইনপুটমোড দিয়ে খেলতে চাইতে পারেন । আরও আলোচনার জন্য বিকাশকারী ডক্স দেখুন ।


2
এটি দুর্দান্ত কাজ করে তবে আপনি কাস্টম কথোপকথনের স্টাইলটি ব্যবহার করছেন এমন ক্ষেত্রে আপনার ডায়ালগ স্টাইলে আপনার <আইটেম নাম = "অ্যান্ড্রয়েড: উইন্ডোজআইফ্লোটিং"> সত্য </item> আছে তা নিশ্চিত করুন।
দিমিত্রি চিস্ত্যকভ

দেখে মনে হচ্ছে এটি ল্যান্ডস্কেপ মোডে (Nexus 7) কাজ করে না, সম্পাদনাযোগ্য উপাদান কীবোর্ডের আওতায় লুকিয়ে থাকে। আমি উইন্ডোসফট ইনপুটমোডের বিভিন্ন সংমিশ্রণ চেষ্টা করেছি। দেখে মনে হচ্ছে যে আমি উইন্ডোজআইফ্লোটিং সেট করতে পারছি না কারণ অ্যাকশনবার এটি সমর্থন করবে না। অথবা এটির সাথে আমার এডিটেক্সটটি তালিকার ভিউ আইটেমের সাথেও আছে এমন কিছু হতে পারে?
সাম্পো সরলা - codidact.org

আমার আইটেমগুলির মধ্যে <আইটেম নাম = "অ্যান্ড্রয়েড: উইন্ডো ট্রান্সলুসেন্টস্যাটাস"> সত্য </item> যোগ করার পরে এটি কাজ করবে না। কোন এক এটি ঠিক?
সর্বাধিক

1
@ ম্যাক্স android:fitsSystemWindows="true"এটিকে সমাধান করতে আপনার রুট ভিউতে যুক্ত করুন।
ডেভিড পাসমোর

1
হোয়াটসঅ্যাপের মতোই নরম কীবোর্ড পাওয়া গেলে কিবোর্ডের উপরে পুরো লেআউটটি টানতে কী হবে ....
কারু বেনসন কারু

162

আমারও একই সমস্যা ছিল। নিম্নলিখিত কোড ব্যবহার করে দেখুন:

android:windowSoftInputMode="adjustPan"

ইনপুটটি ধারণ করে এমন ক্রিয়াকলাপের ক্রিয়াকলাপটিতে এটি আপনার মেনিফেস্ট.এক্সএমএলে যুক্ত করুন। উদাহরণ:

<activity
            android:name=".Activities.InputsActivity"
            ...
            android:windowSoftInputMode="adjustPan"
            />

14
সহজ উত্তর! ঠিক একটি নোট হিসাবে, এটি ম্যানিফেস্ট ফাইলে এবং আমরা যে ক্রিয়াকলাপটি চাই তার অন্তর্ভুক্ত করা দরকার।
এনআরআর

4
আমার ক্ষেত্রে, এটি কমপক্ষে আমার এইচটিএমএলকে বিশৃঙ্খলা করে adjustResizeনা, তবে এটি আমার ইনপুট ক্ষেত্রগুলিও covers
রাহুল

8
এটি আমাকে সাহায্য করে না
ভিকিফর

1
@ ভিকিফর, নিশ্চিত হয়ে নিন যে আপনি নিজের সম্পাদনাটি স্ক্রলভিউতে যুক্ত করেছেন। এমনকি আপনার লেআউটে মাত্র 3-4 টি ক্ষেত্র থাকলেও আপনার সমস্ত ক্ষেত্র স্ক্রোলভিউতে যুক্ত করুন। ভার্চুয়াল কীবোর্ড খুললে এটি স্ক্রোলযোগ্য করে তোলে।
কুলদীপ সখিয়া

দুর্দান্ত কাজ করে, তবে আমি যখনই এডিটেক্সট ভিউতে স্পর্শ করি তখন কীবোর্ডটি আবারও রঙ করা হয়।
ইকবাল

55

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

android:windowSoftInputMode="adjustResize|stateHidden"

পুরো ক্রিয়াকলাপ ট্যাগটি এমনভাবে দেখায়:

<activity
        android:name="com.my.MainActivity"
        android:screenOrientation="portrait"
        android:label="@string/title_activity_main"
        android:windowSoftInputMode="adjustResize|stateHidden" >
    </activity>

এখানে সর্বাধিক গুরুত্বপূর্ণ মান হ'ল অ্যাডজাস্ট্রাইজ করুন। এটি সফটকিবোর্ডের জন্য জায়গা দেওয়ার জন্য পুরো ইউআইকে স্থানান্তরিত করবে।


তবে আপনার সিএসএসের বেশিরভাগ শতাংশের মান থাকলে এটি আপনার এইচটিএমএল চেহারাটি বিলোপ করতে পারে
রাহুল দোল

আপনি কি এখানে অনুমান করছেন বা আপনি চেষ্টা করেছেন? বিটিডব্লিউ এটি আপনার এইচটিএমএল গোলমাল করা উচিত নয়। আমি ওয়েবভিউ দিয়ে চেষ্টা করেছি। এটি পৃথক উপাদান নয় পুরো ভিউ স্থানান্তরিত হবে।
ডানকোডি

1
আমি এটা চেষ্টা করেছি. আমি মনে করি এটি ঘটে কারণ আমার CSS এর বেশিরভাগ শতাংশের মান রয়েছে
রাহুল দোল

@ ডানকোডি আমি চেষ্টা করেছি adjustResize|stateHiddenএবং এটির থেকে কোনও পার্থক্য হয়নি adjustPan
ইগোরগানাপলস্কি

25

আপনি যেভাবে স্ক্রোল করতে চান তা মোছার জন্য কেন কোনও স্ক্রোলভিউ যুক্ত করার চেষ্টা করবেন না। আমি এখানে এটি কীভাবে করেছি, যেখানে আমি আসলে উপরে একটি শিরোনাম রেখে যাই যা স্ক্রোল করে না, যখন আপনি নরম কীপ্যাড খুললে ডায়ালগ উইজেটগুলি (বিশেষত এডিটেক্সটস) স্ক্রোল থাকে।

<LinearLayout android:id="@+id/HeaderLayout" >
  <!-- Here add a header or whatever will not be scrolled. -->
</LinearLayout>
<ScrollView android:id="@+id/MainForm" >
  <!-- Here add your edittexts or whatever will scroll. -->
</ScrollView>

আমার কাছে সাধারণত স্ক্রোলভিউয়ের মধ্যে লিনিয়ারআলআউট থাকবে তবে এটি আপনার পক্ষে। এছাড়াও, স্ক্রোলবার শৈলীর বাইরে সেট করা কমপক্ষে আমার ডিভাইসে, ইনসেট সহায়তা করে।


4
যদিও মায়ার উত্তরটি প্রত্যেককেই করা উচিত (এবং সম্ভবত গুগল যা ভেবেছিল প্রত্যেকেরই করা উচিত), আমি প্রায় প্রতিবারই এটি শেষ করি। প্রদর্শনটি সঠিক করার জন্য প্রয়োজনীয় আসল নিয়ন্ত্রণ পাওয়ার একমাত্র উপায়। দীর্ঘশ্বাস.
স্কট বিগস 10

স্কটের মন্তব্যকে অবমূল্যায়ন করবেন না। এটা সত্য. আমার ক্ষেত্রে আমি আমার তালিকাভিউটি আকার পরিবর্তন করতে বা প্যান করতে চাইনি, তবে সেই তালিকাটির শেষে সম্পাদনা পাঠ্য গ্রহণ করতে চেয়েছিলাম। সুতরাং, আমি সম্পাদনা পাঠ্য স্ক্রোলভিউতে রেখেছি এবং এটি প্রত্যাশার মতো কাজ করে।
দর্পণ

15

আপনার যা করা দরকার তা হ'ল

android:isScrollContainer="true"

উত্স: http://www.davidwparker.com/2011/08/25/android-fixing-window-resize-and-scrolling/


1
যদিও উত্তরটি নিজেই আমাকে খুব একটা সহায়তা করে নি (সংযুক্ত উত্সটিতে সম্পূর্ণ ব্যাখ্যা রয়েছে (ফর্মটি স্ক্রোলভিউতে এম্বেড করা উচিত)। ধন্যবাদ!
jhndodo

তেমনি, পৃষ্ঠায় কিছুই আমাকে সহায়তা করতে পারেনি তবে লিঙ্কটি ক্রিয়াকলাপ উইন্ডোসফট ইনপুটমোডে অ্যাডজাস্ট্রাইজ যুক্ত করে এবং এটি কাজ করে showed
স্টিভেন স্মিথ

14

পুরানো থ্রেডটি পুনরুদ্ধার করার জন্য দুঃখিত তবে android:imeOptions="flagNoFullscreen"আপনার এডিটেক্সট উপাদানটিতে সেটিংয়ের কথা উল্লেখ নেই


7
android:windowSoftInputMode="adjustPan"
android:isScrollContainer="true"

অ্যান্ড্রয়েড এডিটেক্সট জন্য কাজ করে, যদিও এটি ওয়েবভিউ বা এক্সওয়ালভিউয়ের জন্য কাজ করে না। সফ্ট কীবোর্ড যখন ওয়েবভিউ বা এক্সওয়ালভিউতে আপনার ব্যবহার থাকে তা ইনপুটটি আড়াল করেandroid:windowSoftInputMode="adjustResize"


4

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


আমার যা মনে হয় তা হ'ল উইন্ডোটিকে "কৃত্রিমভাবে" দীর্ঘতর করার জন্য যাতে ভিউটি স্ক্রোল করতে পারে। বর্তমানে রিলেটিভলআউট অ্যান্ড্রয়েডে সেট করা হয়েছে: লেআউট_উইথ = "র‌্যাপ_কন্টেন্ট" অ্যান্ড্রয়েড: লেআউট_উইচটি = "র‌্যাপ_কন্টেন্ট"
অ্যালেক্সিস

আমি তখন কোনও সমাধান জানি না। আপনার প্রয়োজন অনুসারে আপনি প্রস্থ এবং উচ্চতার মানগুলিকে ম্যানুয়ালি সামঞ্জস্য করতে চাইতে পারেন, "র‌্যাপ_কন্টেন্ট" এর সাথে সমাধান করা হচ্ছে এমনটিতে আরও প্রসারিত করে।
লুইস মিগুয়েল সেরানানো

1

আপনার আপেক্ষিক ক্রিয়াকলাপে এই একক লাইনটি যুক্ত করুন যেখানে কী বোর্ড কভারটি সম্পাদনা পাঠ্য করুন ins ক্রিয়াকলাপের ক্রিয়াকলাপ () পদ্ধতি ide

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

0

আমি জানি এটি পুরানো তবে উপরের সমাধানগুলির কোনওটিই আমার পক্ষে কার্যকর হয়নি। ব্যাপক ডিবাগিংয়ের পরে, আমি বিষয়টি সন্ধান করলাম। সমাধানটি android:windowTranslucentStatusআমার স্টাইলস.এক্সএমএলে মিথ্যাতে অ্যাট্রিবিউট সেট করছে


0

যদি সম্পাদনা পাঠ্য ক্ষেত্রটি কীবোর্ড দ্বারা আচ্ছাদিত থাকে তবে নিম্নলিখিত কোডটি ব্যবহার করুন:

    EditText= findViewById(R.id.edittext)
    EditText?.getParent()?.requestChildFocus(EditText,EditText)

আপনি যদি চান কার্সার ব্যবহার তুলনায় ফোকাস করা editText হতে EditText.requestFocus()পরে EditText?.getParent()?.requestChildFocus(EditText,EditText) যা ফোকাস এবং কার্সার ফোকাস করা editText পেতে সাহায্য করে।


-1

আপনার AndroidManLive.xML সম্পাদনা করুন

android:windowSoftInputMode="adjustResize"

এটি আপনার লেআউট ফাইলের মূল দৃশ্যে যুক্ত করুন।

android:fitsSystemWindows="true"

এখানেই শেষ.

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