হ্যাঁ, কীবোর্ডটি দেখানো এবং আড়াল করা এবং পিছনের বোতামে কলগুলি আটকানো সম্পূর্ণভাবে সম্ভব। এটি একটু অতিরিক্ত প্রচেষ্টা হিসাবে এটি উল্লেখ করা হয়েছে যে এপিআইতে এটি করার সরাসরি কোনও উপায় নেই। কীটি boolean dispatchKeyEventPreIme(KeyEvent)একটি বিন্যাসের মধ্যে ওভাররাইড করা হয়। আমরা যা করি তা হল আমাদের বিন্যাস তৈরি করা create এটি আমার ক্রিয়াকলাপের ভিত্তি হওয়ায় আমি রিলেটিভলআউটকে বেছে নিয়েছি।
<?xml version="1.0" encoding="utf-8"?>
<com.michaelhradek.superapp.utilities.SearchLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res/com.michaelhradek.superapp"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white">
আমাদের ক্রিয়াকলাপের ভিতরে আমরা আমাদের ইনপুট ক্ষেত্রগুলি সেট আপ করি এবং setActivity(...)ফাংশনটি কল করি ।
private void initInputField() {
mInputField = (EditText) findViewById(R.id.searchInput);
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
mInputField.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
performSearch();
return true;
}
return false;
}
});
SearchLayout.setSearchActivity(this);
}
স্পষ্টতই, initInputField()ফাংশনটি ইনপুট ক্ষেত্র সেট আপ করে। এটি কার্যকারিতা (আমার ক্ষেত্রে একটি অনুসন্ধান) চালাতে এন্টার কীটিকে সক্ষম করে।
@Override
public void onBackPressed() {
DataHelper.cancelSearch();
hideKeyboard();
super.onBackPressed();
}
সুতরাং যখন onBackPressed()আমাদের বিন্যাসের মধ্যে ডাকা হয় তখন আমরা কীবোর্ডটি লুকানোর মতো যা কিছু করতে চাই তা করতে পারি:
private void hideKeyboard() {
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mInputField.getWindowToken(), 0);
}
যাইহোক, এখানে আমার সম্পর্কিত রিয়েলটিভ লেআউট over
package com.michaelhradek.superapp.utilities;
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.RelativeLayout;
public class SearchLayout extends RelativeLayout {
private static final String TAG = "SearchLayout";
private static Activity mSearchActivity;;
public SearchLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SearchLayout(Context context) {
super(context);
}
public static void setSearchActivity(Activity searchActivity) {
mSearchActivity = searchActivity;
}
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
Log.d(TAG, "dispatchKeyEventPreIme(" + event + ")");
if (mSearchActivity != null &&
event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
KeyEvent.DispatcherState state = getKeyDispatcherState();
if (state != null) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&& event.getRepeatCount() == 0) {
state.startTracking(event, this);
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP
&& !event.isCanceled() && state.isTracking(event)) {
mSearchActivity.onBackPressed();
return true;
}
}
}
return super.dispatchKeyEventPreIme(event);
}
}
দুর্ভাগ্যক্রমে আমি সমস্ত কৃতিত্ব নিতে পারি না। আপনি যদি দ্রুত অনুসন্ধান ডায়ালগ বক্সের জন্য অ্যান্ড্রয়েড উত্সটি পরীক্ষা করেন তবে আপনি দেখতে পাবেন যে ধারণাটি এসেছে।