অ্যান্ড্রয়েডে সফ্ট কীবোর্ড নেক্সট ক্লিক করা হলে অন্য সম্পাদনা পাঠ্য স্থানে যান


216

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

এখানে চিত্র বর্ণনা লিখুন

<LinearLayout
    android:id="@+id/LinearLayout01"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="User Name*" />

    <EditText
        android:id="@+id/txt_User"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true" />

</LinearLayout>


<LinearLayout
    android:id="@+id/LinearLayout02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password*" />

    <EditText
        android:id="@+id/txt_Password"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true"
        android:password="true" />

    <TextView
        android:id="@+id/confirm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password*" />

    <EditText
        android:id="@+id/txt_Confirm"
        android:layout_width="290dp"
        android:layout_height="33dp"
        android:singleLine="true"
        android:password="true" />

</LinearLayout>

1
অ্যান্ড্রয়েডে একবার দেখুন: imeOptions
টবরুন

আমি এই কোডটি কোথায় রাখব?
অ্যান্ড্রয়েডবুমার

উত্তর:


473

ফোকাস হ্যান্ডলিং

ফোকাস আন্দোলন একটি অ্যালগরিদমের উপর ভিত্তি করে যা নির্দিষ্ট দিকের নিকটতম প্রতিবেশীকে খুঁজে পায়। বিরল ক্ষেত্রে, ডিফল্ট অ্যালগরিদম বিকাশকারীদের উদ্দেশ্যমূলক আচরণের সাথে মেলে না।

নিম্নলিখিত এক্সএমএল বৈশিষ্ট্যগুলি ব্যবহার করে নির্দেশিক নেভিগেশনের ডিফল্ট আচরণ পরিবর্তন করুন:

android:nextFocusDown="@+id/.."  
android:nextFocusLeft="@+id/.."    
android:nextFocusRight="@+id/.."    
android:nextFocusUp="@+id/.."  

নির্দেশমূলক নেভিগেশন ছাড়াও আপনি ট্যাব নেভিগেশন ব্যবহার করতে পারেন। এই জন্য আপনার ব্যবহার করা প্রয়োজন

android:nextFocusForward="@+id/.."

ফোকাস নিতে একটি নির্দিষ্ট ভিউ পেতে কল করুন

view.requestFocus()

কিছু পরিবর্তনশীল ফোকাস ইভেন্ট শুনতে একটি ব্যবহার করুন View.OnFocusChangeListener


কীবোর্ড বোতাম

আপনি android:imeOptionsআপনার কীবোর্ডের অতিরিক্ত বোতামটি পরিচালনা করার জন্য ব্যবহার করতে পারেন ।

আপনার অ্যাপ্লিকেশনটির সাথে সংহতকরণ উন্নত করতে অতিরিক্ত সম্পাদনা সম্পাদকের সাথে যুক্ত আইএমইতে সক্ষম করতে পারেন। এখানে ধ্রুবকগুলি imeOptions দ্বারা সংজ্ঞায়িতগুলির সাথে মিলে যায়।

ImeOptions এর ধ্রুবকগুলিতে বিভিন্ন ক্রিয়া এবং পতাকা অন্তর্ভুক্ত রয়েছে, তাদের মানগুলির জন্য উপরের লিঙ্কটি দেখুন।

মূল্য উদাহরণ

অ্যাকশনসেক্সট :

ক্রিয়াকলাপটি "পরবর্তী" অপারেশন সম্পাদন করে ব্যবহারকারীকে পরবর্তী ক্ষেত্রে নিয়ে যা পাঠ্য গ্রহণ করবে।

অ্যাকশনডোন :

ক্রিয়া কী একটি "সম্পন্ন" অপারেশন সম্পাদন করে, সাধারণত অর্থ ইনপুট করার মতো আর কিছুই নেই এবং আইএমই বন্ধ হয়ে যাবে।

কোড উদাহরণ:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="32dp"
        android:layout_marginTop="16dp"
        android:imeOptions="actionNext"
        android:maxLines="1"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/editText1"
        android:layout_below="@+id/editText1"
        android:layout_marginTop="24dp"
        android:imeOptions="actionDone"
        android:maxLines="1"
        android:ems="10" />

</RelativeLayout>

আপনি যদি আইমোপশনগুলি শুনতে চান তবে একটি ব্যবহার করুন TextView.OnEditorActionListener

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            performSearch();
            return true;
        }
        return false;
    }
});


20
আমার ক্ষেত্রে android:nextFocusForward="@+id/.."কৌতুক করেছে।
মিঃ মাউস্টার্ড

23
আমি android:imeOptions="actionNext"আমার সমস্ত এডিটেক্সটগুলিতে রেখেছি এবং সমস্যাটি শেষ হয়ে গেছে। অনেক ধন্যবাদ।
জোয়াকুইন ইয়ারচুক

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

9
আমার অ্যাপ্লিকেশনটির জন্য, কেবল অ্যান্ড্রয়েড ব্যবহার করে: imeOptions = "অ্যাকশননিস্ট" কাজ করে না। আইডিঅ্যাপশন পতাকাটি শোনার আগে এডিটেক্সটটির দরকার অ্যান্ড্রয়েড: ইনপুট টাইপ = "[কিছু]"।
ক্রিস কেলি

4
এটি কীভাবে জানতে পারে যে নেক্সট টিপতে কোনটিকে ফোকাস করতে হবে? এটি "ডান" এবং তারপরে "নীচে" চেক করে? পরবর্তী ভিউটির আইডি ফোকাস করার জন্য কোনও ফাংশন রয়েছে, যদি ব্যবহারকারী নেক্সট কী টিপেন?
অ্যান্ড্রয়েড বিকাশকারী

66
android:inputType="text"

একই প্রভাব আনতে হবে। পরবর্তী উপাদানটিতে ফোকাস আনতে পরবর্তী হিট করার পরে।

android:nextFocusDown="@+id/.."

এই ব্যবহার ছাড়াও আপনি আত ফোকাস পাওয়ার ক্ষেত্রে পরবর্তী দৃশ্য চান


34

আপনার editText যুক্ত করুন

android:imeOptions="actionNext"
android:singleLine="true"

ম্যানিফেস্টে ক্রিয়াকলাপে সম্পত্তি যুক্ত করুন

    android:windowSoftInputMode="adjustResize|stateHidden"

লেআউট ফাইলে স্ক্রোলভিউকে সমস্ত ইউআইটি মূল বা প্যারেন্ট লেআউট হিসাবে সেট করা হয়

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.ukuya.marketplace.activity.SignInActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

       <!--your items-->

    </ScrollView>

</LinearLayout>

আপনি যদি প্রতিটি সময় এটি যুক্ত না করতে চান তবে শৈলী তৈরি করুন: মান / শৈলী.এক্সএমএল শৈলী যুক্ত করুন

default / শৈলী:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="editTextStyle">@style/AppTheme.CustomEditText</item>
    </style>

<style name="AppTheme.CustomEditText"     parent="android:style/Widget.EditText">
        //...
        <item name="android:imeOptions">actionNext</item>
        <item name="android:singleLine">true</item>
    </style>

ব্যবহার android:singleLine="true"বর্ণিত হয়।
প্রবীণকুমার

18

নিম্নলিখিত লাইন ব্যবহার করুন

android:nextFocusDown="@+id/parentedit"

parenteditEditTextফোকাস করা পরবর্তী আইডি হয় ।

উপরের লাইনের জন্যও নিম্নলিখিত লাইনের প্রয়োজন হবে।

android:inputType="text"

অথবা

android:inputType="number"

অ্যালেক্সেই খ্লেবনিকোভের পরামর্শের জন্য ধন্যবাদ


3
এটা আমার জন্য কাজ করেছে। একসাথে android:inputType="text"বা android:inputType="number"
আলেক্সি খ্লেবনিকভ

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

অ্যান্ড্রয়েড: নেক্সটফোকসডাউন = "@ + আইডি / পেরেন্টিটিট" আমার পক্ষে কাজ করেছে! ধন্যবাদ
শুকনো ডেভ

12
android:inputType="textNoSuggestions"
android:imeOptions="actionNext"
android:singleLine="true"
android:nextFocusForward="@+id/.."

অতিরিক্ত ক্ষেত্র যুক্ত করা হচ্ছে

অ্যান্ড্রয়েড ইনপুট = "textNoSuggestions"

আমার ক্ষেত্রে কাজ!


9
<AutoCompleteTextView
                android:id="@+id/email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/user"
                android:hint="@string/username"
                android:inputType="text"
                android:maxLines="1"
                android:imeOptions="actionNext"
                android:singleLine="true" />

এই তিন লাইন ম্যাজিক না

            android:maxLines="1"
            android:imeOptions="actionNext"
            android:singleLine="true"

6

আপনার অডিটরঅ্যাকশন হ্যান্ডলারে, মনে রাখবেন যে আপনাকে অবশ্যই এমন একটি বুলিয়ান প্রদান করতে হবে যা নির্দেশ করে যে আপনি যদি ক্রিয়াটি পরিচালনা করছেন (সত্য) অথবা আপনি যদি কিছু যুক্তি প্রয়োগ করেন এবং স্বাভাবিক আচরণ চান (মিথ্যা), যেমন নীচের উদাহরণ হিসাবে:

EditText te = ...
te.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
        if (actionId == EditorInfo.IME_ACTION_NEXT) {
            // Some logic here.
            return true; // Focus will do whatever you put in the logic.
        }
        return false;  // Focus will change according to the actionId
    }
});

আমার যুক্তি সম্পাদনের পরে যখন সত্য ফিরে এসেছি তখনই আমি এটি পেয়েছি যেহেতু ফোকাস সরানো হয়নি।


3

কেবলমাত্র নীচের কোডটি ব্যবহার করুন এটি কার্যকর হবে এবং প্রতিটি সম্পাদনা পাঠের জন্য ইনপুট টাইপ ব্যবহার করবে এবং পরবর্তী বোতামটি কীবোর্ডে উপস্থিত হবে appear

android:inputType="text" or android:inputType="number" etc

2

কিছু ক্ষেত্রে আপনাকে পরবর্তী ক্ষেত্রটিতে ম্যানুয়ালি ফোকাসটি স্থানান্তর করতে হবে:

focusSearch(FOCUS_DOWN).requestFocus();

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


2

সহজ উপায়, যখন আপনার একে একে কয়েকটি ক্ষেত্র থাকবে:

সেট করা দরকার

android:maxLines="1"

android:imeOptions="actionNext"

android:inputType="" <- আপনার পাঠ্যের প্রকারটি সেট করুন, অন্য ক্ষেত্রে এটি মাল্টলাইন হবে এবং এরপরে যেতে বাধা দেবে

নমুনা:

<EditText android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:textSize="@dimen/text_large"
              android:maxLines="1"
              android:inputType="textEmailAddress"
              android:imeOptions="actionNext"
              android:layout_marginLeft="@dimen/element_margin_large"
              android:layout_marginRight="@dimen/element_margin_large"
              android:layout_marginTop="0dp"/>

2

অ্যান্ড্রয়েড ব্যবহার করে দেখুন : imeOptions = "অ্যাকশননেক্সট" ট্যাগটিতে প্রতিটি সম্পাদনা পাঠের জন্য ভিউতে এটি স্বয়ংক্রিয়ভাবে পরবর্তী সম্পাদনাটিতে ফোকাস হবে যখন আপনি সফটকিবোর্ডের Next এ ক্লিক করবেন।


1
<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollView01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="vertical" >

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="666dp"
android:background="#1500FFe5"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<TextView
    android:id="@+id/TextView02"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editGrWt"
    android:layout_marginTop="14dp"
    android:layout_toLeftOf="@+id/textView3"
    android:ems="6"
    android:text="    Diamond :"
    android:textColor="@color/background_material_dark"
    android:textSize="15sp" />
  <EditText
    android:id="@+id/editDWt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/TextView02"
    android:layout_alignLeft="@+id/editGrWt"
    android:background="@color/bright_foreground_inverse_material_light"
    android:ems="4"
    android:hint="Weight"
    android:inputType="numberDecimal"
    android:nextFocusLeft="@+id/editDRate"
    android:selectAllOnFocus="true"
    android:imeOptions="actionNext"

    />
 <requestFocus />


<TextView
    android:id="@+id/TextView03"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/TextView02"
    android:layout_below="@+id/TextView02"
    android:layout_marginTop="14dp"
    android:ems="6"
    android:text="    Diamond :"
    android:textColor="@color/background_material_dark"
    android:textSize="15sp" />

<EditText
    android:id="@+id/editDWt1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/TextView03"
    android:layout_alignBottom="@+id/TextView03"
    android:layout_alignLeft="@+id/editDWt"
    android:background="@color/bright_foreground_inverse_material_light"
    android:ems="4"
    android:hint="Weight"
    android:inputType="numberDecimal"
    android:text="0"
    android:selectAllOnFocus="true"
    android:imeOptions="actionNext"/>
 <requestFocus />

<TextView
    android:id="@+id/TextView04"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editDWt1"
    android:layout_marginTop="14dp"
    android:layout_toLeftOf="@+id/textView3"
    android:ems="6"
    android:text="         Stone :"
    android:textColor="@color/background_material_dark"
    android:textSize="15sp" />

<EditText
    android:id="@+id/editStWt1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/TextView04"
    android:layout_alignBottom="@+id/TextView04"
    android:layout_alignLeft="@+id/editDWt1"
    android:background="@color/bright_foreground_inverse_material_light"
    android:ems="4"
    android:hint="Weight"
    android:inputType="numberDecimal"
    android:nextFocusForward="@+id/editStRate1"
    android:imeOptions="actionNext" />
 <requestFocus />
  <TextView
     android:id="@+id/TextView05"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignLeft="@+id/TextView04"
     android:layout_below="@+id/editStRate1"
     android:layout_marginTop="14dp"
     android:ems="6"
     android:text="         Stone :"
     android:textColor="@color/background_material_dark"
     android:textSize="15sp" />


</RelativeLayout>

</ScrollView>

4
অন্যের চেয়ে কেন আপনার চেয়ে ভাল তা বোঝাতে আপনি নিজের উত্তরের সাথে একটি ব্যাখ্যা দিতে চাইতে পারেন। আপনার উত্তরে যুক্ত করতে আপনি "সম্পাদনা" বোতাম টিপতে পারেন।
ব্রায়ান টম্পसेट - :

1

আপনি যদি এর EditTextসাথে একাধিক লাইন ব্যবহার করতে চান তবে imeOptionsচেষ্টা করুন:

android:inputType="textImeMultiLine"

1

এডিটেক্সট এ ইনপুট টাইপ যুক্ত করুন এবং প্রবেশের পরে এটি পরবর্তী সম্পাদনাটিতে যাবে

android:inputType="text"
android:inputType="textEmailAddress"
android:inputType="textPassword" 

এবং আরো অনেক.

ইনপুটটাইপ = টেক্সটমલ્ટিয়ালাইন প্রবেশের পরবর্তী সম্পাদনাটিতে যায় না


1

কোটলিনে আমি বেলো ব্যবহার করেছি ..

  1. XML:

    <EditText
      android:id="@+id/et_amount"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:imeOptions="actionNext"
      android:inputType="number"
      android:singleLine="true" />
  2. কোটলিনে:

    et_amount.setOnEditorActionListener { v, actionId, event ->
    
        if (actionId == EditorInfo.IME_ACTION_NEXT) {
            // do some code
            true
        } else {
            false
        }
    }

0
Inside Edittext just arrange like this


<EditText
    android:id="@+id/editStWt1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:imeOptions="actionNext" //now its going to rightside/next field automatically
    ..........
    .......

</EditText>

0

যদি আপনার কাছে স্ক্রোল ভিউতে উপাদান থাকে তবে আপনি এই সমস্যাটিকেও এইভাবে সমাধান করতে পারেন:

<com.google.android.material.textfield.TextInputEditText
                android:id="@+id/ed_password"
                android:inputType="textPassword"
                android:focusable="true"
                android:imeOptions="actionNext"
                android:nextFocusDown="@id/ed_confirmPassword" />

এবং আপনার ক্রিয়াকলাপে:

edPassword.setOnEditorActionListener(new EditText.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_NEXT) {
                focusOnView(scroll,edConfirmPassword);
                return true;
            }
            return false;
        }
    });

public void focusOnView(ScrollView scrollView, EditText viewToScrollTo){
    scrollView.post(new Runnable() {
        @Override
        public void run() {
            scrollView.smoothScrollTo(0, viewToScrollTo.getBottom());
            viewToScrollTo.requestFocus();
        }
    });
}

0

সহজ উপায় :

  • কার্সারটিকে পরবর্তী সম্পাদনাতে অটো মুভ করুন
  • Edittext যদি শেষ ইনপুট হয় -> লুকানো কীবোর্ড

.Xml ফাইলে এডিটেক্সট ফিল্ডে এটি যুক্ত করুন

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