java - উনল - সহজ বাংলা কিবোর্ড




প্রোগ্রামিক্যালি লুকান/অ্যান্ড্রয়েড সফ্ট কীবোর্ড দেখান (3)

সম্ভাব্য ডুপ্লিকেট:
অ্যান্ড্রয়েড সফ্ট কীবোর্ড বন্ধ / লুকান

প্রথম জিনিস আমি প্রথমে এই থ্রেড দেখেছি। আমি সেখানে দেওয়া পদ্ধতি গ্রহণ করার চেষ্টা করেছি ... কিন্তু কিছুই আমার জন্য কাজ করেনি ..

আমি আমার অ্যাপ্লিকেশন দুটি পর্দা আছে।

  • প্রথমটিতে ২ টি সম্পাদনাের ঠিকানা আছে - ব্যবহারকারীর নাম এবং পাসওয়ার্ডের জন্য একটি
  • তালিকাটি ফিল্টার করার জন্য দ্বিতীয়টিতে একটি তালিকা ভিউ এবং একটি সম্পাদনা পাঠ্য আছে

আমার প্রথম স্ক্রিনে, আমি ব্যবহারকারীর নাম EditText টি শুরুতে ফোকাস করতে চাই এবং কীবোর্ডটি দৃশ্যমান হওয়া উচিত .. এটি আমার বাস্তবায়ন (অপ্রয়োজনীয় / সম্পর্কিত সম্পর্কগুলি সরানোর মাধ্যমে সরলীকৃত) ..

app_login.xml

<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:paddingLeft="20dip"  
    android:paddingRight="20dip">

    <EditText android:id="@+id/username" android:singleLine="true" 
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content" android:hint="Username"  
        android:imeOptions="actionDone" android:inputType="text"
        android:maxLines="1"/>

    <EditText android:id="@+id/password" android:password="true" 
        android:singleLine="true"  
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:hint="Password" />

</LinearLayout>

AppLogin.java

class AppLogin extends Activity{
    private EditText mUserNameEdit = null;
    private EditText mPasswordEdit = null;

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

        mUserNameEdit  =    (EditText) findViewById(R.id.username);
        mPasswordEdit  =    (EditText) findViewById(R.id.password);

        /* code to show keyboard on startup.this code is not working.*/
        InputMethodManager imm =  (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(mUserNameEdit, InputMethodManager.SHOW_IMPLICIT);

    }//End of onCreate()
}

আচ্ছা, কীবোর্ড শুরুতে দেখাচ্ছে না । এবং আমার নকশা খারাপভাবে সেখানে একটি কীবোর্ড প্রয়োজন ..

এখন দ্বিতীয় পৃষ্ঠায় .. আমি ইতিমধ্যেই আমার কাছে একটি তালিকা দেখুন এবং এডিটেক্ট আছে। আমি চাই যে আমার কীবোর্ডটি শুধুমাত্র শুরু হওয়ার পরেই লুকানো থাকবে যখন ব্যবহারকারী editText টি স্পর্শ করে .. আপনি কি এটি বিশ্বাস করতে পারেন? যাই হোক না কেন আমি নরম কীবোর্ড চেষ্টা করা হচ্ছে যখন আমি কার্যকলাপ লোড করা হয় .. আমি এটা লুকাতে পারবেন না ..

app_list_view.xml

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:orientation="vertical" >
    <EditText android:id="@+id/filter_edittext"       
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:hint="Search" android:inputType="text" android:maxLines="1"/>
    <ListView android:id="@id/android:list" android:layout_height="fill_parent"
        android:layout_weight="1.0" android:layout_width="fill_parent" 
        android:focusable="true" android:descendantFocusability="beforeDescendants"/>
</LinearLayout>     

AppList.java

public class MyListActivity extends ListActivity{
   private EditText mfilterEditText;

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

      mFilterEditText  =  (EditText) findViewById(R.id.filter_edittext);
      InputMethodManager imm = InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
      imm.hideSoftInputFromWindow(mFilterEditText.getWindowToken(), 0);
   }
}

সহজ ভাবে

  1. লগইন পৃষ্ঠায় (প্রথম পৃষ্ঠা) আমি আমার কীবোর্ডটি শুরুতে দৃশ্যমান হতে চাই ..
  2. দ্বিতীয় পৃষ্ঠায় আমি প্রথমবার লুকানো কীবোর্ডটি চাই, কেবল তখনই প্রদর্শিত হবে যখন ব্যবহারকারী editText টি স্পর্শ করবে

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

শেষ আউটকাম

ওয়েল আমি এখানে সব বন্ধুদের সাহায্যে, এটি কাজ পেয়েছিলাম।

1. প্রারম্ভে কীবোর্ড দেখান

দুই উত্তর আমার জন্য কাজ। @ কেপড্রয়েড দ্বারা সরবরাহিত এক, যা হ্যান্ডলার ব্যবহার করতে এবং বিলম্বিত করার পরে ..

mUserNameEdit.postDelayed(new Runnable() {
  @Override
  public void run() {
    // TODO Auto-generated method stub
    InputMethodManager keyboard = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    keyboard.showSoftInput(mUserNameEdit, 0);
  }
},50);

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

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

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

2. কার্যকলাপ শুরু কীবোর্ড লুকান

শুধু একটি উত্তর আমার জন্য কাজ করে, যা @ দিয়ারিশ দ্বারা প্রদান করা হয়। এবং সম্পাদনটি সম্পাদনযোগ্য লেআউটের জন্য এক্সএমএল-এ ফোকাসযোগ্য ইন-টাচমোড সেটিংস ব্যবহার করার সমাধান। এই কৌশল ছিল

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:orientation="vertical" android:focusableInTouchMode="true">
    <EditText android:id="@+id/filter_edittext"       
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:hint="Search" android:inputType="text" android:maxLines="1"/>
    <ListView android:id="@id/android:list" android:layout_height="fill_parent"
        android:layout_weight="1.0" android:layout_width="fill_parent" 
        android:focusable="true" android:descendantFocusability="beforeDescendants"/>
</LinearLayout> 

যাইহোক আমি উভয় ক্ষেত্রে Dyarish এর উত্তর ব্যবহার শেষ পর্যন্ত। তাই আমি তার প্রতি আনুগত্য দিচ্ছি..আমার সব বন্ধুদের ধন্যবাদ যারা আমাকে সাহায্য করার চেষ্টা করেছিল ..


আপনার কোড android:focusableInTouchMode="true" আপনার সম্পাদক বাক্সের জন্য প্রারম্ভে আপনার কীপ্যাড প্রদর্শিত হবে তা নিশ্চিত করবে। আপনি আপনার রেখার লেআউটটিতে এই লাইনটি যুক্ত করতে চান যা সম্পাদনাটিক্সক্স রয়েছে। আপনি উভয় আপনার সমস্যার সমাধান করার জন্য এই সঙ্গে খেলা করতে সক্ষম হওয়া উচিত। আমি এই পরীক্ষা করেছি। সহজ সমাধান।

অর্থাৎ: আপনার app_list_view.xml ফাইলে

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:focusableInTouchMode="true">
    <EditText 
        android:id="@+id/filter_edittext"       
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:hint="Search" 
        android:inputType="text" 
        android:maxLines="1"/>
    <ListView 
        android:id="@id/android:list" 
        android:layout_height="fill_parent"
        android:layout_weight="1.0" 
        android:layout_width="fill_parent" 
        android:focusable="true" 
        android:descendantFocusability="beforeDescendants"/>
</LinearLayout> 

------------------ সম্পাদনা করুন: প্রারম্ভে কীবোর্ডটি প্রদর্শিত করতে -----------------------

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:paddingLeft="20dip"  
    android:paddingRight="20dip">
    <EditText 
        android:id="@+id/userName" 
        android:singleLine="true" 
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content" 
        android:hint="Username"  
        android:imeOptions="actionDone" 
        android:inputType="text"
        android:maxLines="1"
       />
    <EditText 
        android:id="@+id/password" 
        android:password="true" 
        android:singleLine="true"  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:hint="Password" />
    <ScrollView
        android:id="@+id/ScrollView01"  
        android:layout_height="fill_parent"   
        android:layout_width="fill_parent"> 
    </ScrollView>
</LinearLayout>

আপনি যদি আরও বেশি বুদ্ধিমান সমাধান খুঁজছেন, তবে আমি this প্রশ্নটি খুঁজে পেয়েছি যা আপনাকে সাহায্য করতে পারে, এটি সমাধান হিসাবে সহজ নয় তবে সম্ভবত একটি ভাল সমাধান। আমি এটা পরীক্ষা করে নি কিন্তু এটা দৃশ্যত কাজ করে। আমার মনে হয় এটি এমন সমাধানটির মতো যা আপনি চেষ্টা করেছেন যা আপনার জন্য কাজ করে না।

আপনি এই খুঁজছেন হয় কি আশা করি।

চিয়ার্স!


আপনি প্রথম উইন্ডোতে InputMethodManager.SHOW_IMPLICIT চেষ্টা করেছেন।

এবং দ্বিতীয় উইন্ডোতে লুকানোর জন্য InputMethodManager.HIDE_IMPLICIT_ONLY ব্যবহার InputMethodManager.HIDE_IMPLICIT_ONLY

সম্পাদনা করুন:

যদি এটি এখনও কাজ না করে তবে সম্ভবত আপনি এটি ভুল জায়গায় রেখেছেন। onFinishInflate() এবং প্রদর্শন / সেখানে লুকান।

@override
public void onFinishInflate() {
     /* code to show keyboard on startup */
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(mUserNameEdit, InputMethodManager.SHOW_IMPLICIT);
}

আপডেট 2

@Override
    protected void onResume() {
        super.onResume();
        mUserNameEdit.requestFocus();

        mUserNameEdit.postDelayed(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                InputMethodManager keyboard = (InputMethodManager)
                getSystemService(Context.INPUT_METHOD_SERVICE);
                keyboard.showSoftInput(mUserNameEdit, 0);
            }
        },200); //use 300 to make it run when coming back from lock screen
    }

আমি খুব কঠিন চেষ্টা করেছি এবং একটি সমাধান খুঁজে পেয়েছি ... যখনই একটি নতুন কার্যকলাপ শুরু হয় তখন কীবোর্ড খুলতে পারে না তবে আমরা RunNable inResume এ ব্যবহার করতে পারি এবং এটি ভাল কাজ করছে তাই দয়া করে এই কোডটি চেষ্টা করে দেখুন ...

আপডেট 1

আপনার AppLogin.java এই লাইন যোগ করুন

mUserNameEdit.requestFocus();

এবং আপনার AppList.java এই লাইন

listview.requestFocus()'

এটি পরে আপনার অ্যাপ্লিকেশনটি যদি কাজ না করে তবে আপনার AndroidManifest.xml ফাইলে এই লাইন যুক্ত করুন

<activity android:name=".AppLogin" android:configChanges="keyboardHidden|orientation"></activity>
<activity android:name=".AppList" android:configChanges="keyboard|orientation"></activity>

মূল উত্তর

 InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);

গোপন কীবোর্ড জন্য

 imm.hideSoftInputFromWindow(ed.getWindowToken(), 0); 

শো কীবোর্ড জন্য

 imm.showSoftInput(ed, 0);

EditText উপর ফোকাস জন্য

 ed.requestFocus();

যেখানে ed সম্পাদনা করা হয়






soft-keyboard