InputMethodManager ব্যবহার করে সফ্ট কিবোর্ড প্রোগ্রাম্যাটিক্যালি দেখানো
অ্যান্ড্রয়েডে EditText ফোকাস পেলে অটোমেটিক্যালি কিবোর্ড দেখানোর জন্য `InputMethodManager` এবং `showSoftInput()` মেথড ব্যবহার করা হয়। এটি ইউজার এক্সপেরিয়েন্স উন্নত করে কারণ ইউজারকে ম্যানুয়ালি কিবোর্ড খুলতে হয় না।
ধাপ ১: প্রজেক্ট তৈরি করুন
স্ট্যান্ডার্ড অ্যান্ড্রয়েড প্রজেক্ট।
ধাপ ২: লেআউট - কেবল EditText
res/layout/activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
ধাপ ৩: কিবোর্ড দেখানোর লজিক
src/MainActivity.java:
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
showSoftKeyboard(editText);
}
public void showSoftKeyboard(View view) {
// ফোকাস চাইতে হয়
if (view.requestFocus()) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}
}
}
}
বিকল্প পদ্ধতি: XML-এ অটো-ফোকাস
কোড ছাড়া XML-এই করা যায়:
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:focusable="true"
android:focusableInTouchMode="true">
<requestFocus />
</EditText>
অথবা ম্যানিফেস্টে এক্টিভিটির জন্য:
<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateVisible"> <!-- অথবা stateAlwaysVisible -->
...
</activity>
InputMethodManager ফ্ল্যাগস
| ফ্ল্যাগ | বর্ণনা |
|---|---|
SHOW_IMPLICIT | ইমপ্লিসিট রিকোয়েস্ট (ডিফল্ট আচরণ) |
SHOW_FORCED | বাধya করে দেখান (সতর্কতা: ব্যবহারকারী অভিজ্ঞতা বাধা দিতে পারে) |
HIDE_IMPLICIT_ONLY | শুধু ইমপ্লিসিটলি হাইড করুন |
HIDE_NOT_ALWAYS | হাইড করুন কিন্তু সবসময় নয় |