অ্যান্ড্রয়েড এডিটেক্সট অক্ষম করা হচ্ছে


195

আমার অ্যাপ্লিকেশনটিতে, আমার কাছে একটি সম্পাদনা পাঠ রয়েছে যা ব্যবহারকারীর কাছে কেবল পাঠ অ্যাক্সেস নেই লেখার অ্যাক্সেস রয়েছে।

কোড আমি সেট android:enabled="false"

যদিও এডিটেক্সট এর পটভূমি অন্ধকারে পরিবর্তিত হয়েছে, আমি যখন এটিতে ক্লিক করি তখন কীবোর্ড পপ আপ হয় এবং আমি পাঠ্যটি পরিবর্তন করতে পারি।

সম্পাদনা পাঠ অক্ষম করার জন্য আমার কী সেট করা উচিত?


2
দর্শনশৈলী এবং স্ক্রোলিং আচরণ উভয়ই সংরক্ষণ করা সম্ভব। EditTextএই বৈশিষ্ট্যগুলি বজায় রাখার সময় কিছুটা অক্ষম করতে কেবল এই লাইব্রেরিUI.setReadOnly(myEditText, true) থেকে ব্যবহার করুন । আপনি যদি লাইব্রেরি ছাড়া এই আচরণটির প্রতিলিপি করতে চান তবে এই ছোট পদ্ধতির উত্স কোডটি দেখুন check
কাবা

উত্তর:


245

আমি বিশ্বাস করি সঠিক সেট করা হবে android:editable="false"

এবং যদি আপনি আশ্চর্য হন যে কেন আমার লিঙ্কটি এর বৈশিষ্ট্যগুলিকে নির্দেশ করে TextView, আপনি উত্তরটি কারণ EditTextউত্তরাধিকার সূত্রে TextView:

এডিট টেক্সট হ'ল টেক্সটভিউয়ের উপরে একটি পাতলা ব্যহ্যাবরণ যা নিজেকে সম্পাদনযোগ্য হতে কনফিগার করে।

আপডেট:
নীচের মন্তব্যে উল্লিখিত হিসাবে, editableঅবচয় করা হয়েছে ( API স্তর 3 থেকে ) since পরিবর্তে আপনি ব্যবহার করা উচিতinputType (মান সহ none)।


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

18
অ্যান্ড্রয়েড: সম্পাদনাযোগ্য হ্রাস করা হয়। অ্যান্ড্রয়েড: ইনপুটটাইপ = "কিছুই নয়" এর পরিবর্তে ব্যবহার করা উচিত তবে এতে বাগ রয়েছে এবং এটি কার্যকর হয় না। আমরা সকলেই এখানে সমস্যাটি তারকাচিহ্নিত করে দেখাই ভালো লাগবে
ভিক্টর

85
editText.setEnabled(false); editText.setInputType(InputType.TYPE_NULL);
Asyptote

28
android:editable="false" android:focusable="false"আমার জন্য দুর্দান্ত কাজ করে (অবচয় সম্পর্কে ভুলে যান, আমি অ্যান্ড্রয়েড মনে করি: সম্পাদনাযোগ্যটির অ্যান্ড্রয়েডের সাথে কোনও সম্পর্ক নেই: ইনপুটটাইপ)
মুহাম্মদ বাবর

8
তাদের সকলের জন্য, যাদের জন্য অ্যান্ড্রয়েড: ইনপুটটাইপ = "কিছুই নয়" কাজ করছে না, চেষ্টা করুন: অ্যান্ড্রয়েড: ইনপুটটাইপ = অ্যান্ড্রয়েডের সাথে "কিছুই নয়": ফোকাসযোগ্য = "মিথ্যা"
সুরেন্দ্র কুমার

161

ব্যবহার EditText.setFocusable(false) নিষ্ক্রিয় সম্পাদনায়
EditText.setFocusableInTouchMode(true)সম্পাদনা সক্ষম করার জন্য;


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

4
@kaneda। আমি আসলে এটি পছন্দ। আমি চাই না যে আমার বাক্সটি ধূসর হোক। :)
ডুমসকনাইট

1
অ্যান্ড্রয়েড ৪.৪-এ, এই বিকল্পগুলি মূল পাঠ্যের রঙ রাখে। ব্যবহারের editText.setEnabled(false);ফলে পাঠ্যের রঙ ধূসর হয়ে যাবে। যাইহোক, স্পিনারগুলি ব্যবহার করার সময় পাঠ্যের রঙ পরিবর্তন করে না setEnabled, এটি একটি বেমানান অভিজ্ঞতা তৈরি করে।
tbraun

কেন না setFocusable(true)? মধ্যে পার্থক্য জন্য এই লিঙ্কে দেখুন setFocusable()এবং setFocusableInTouchMode(): stackoverflow.com/questions/23799064/...
kenju

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

64

আপনি নিম্নলিখিত পদ্ধতিটি ব্যবহার করে দেখতে পারেন:

 private void disableEditText(EditText editText) {
    editText.setFocusable(false);
    editText.setEnabled(false);
    editText.setCursorVisible(false);
    editText.setKeyListener(null);
    editText.setBackgroundColor(Color.TRANSPARENT); 
 }

সক্ষম সম্পাদনা পাঠ:

সক্রিয় সম্পাদনা পাঠ্য

অক্ষম সম্পাদনা পাঠ:

অক্ষম সম্পাদনা পাঠ্য

এটি আমার পক্ষে কাজ করে এবং আশা করি এটি আপনাকে সহায়তা করবে।


1
এটি টেক্সটভিউয়ের মতো দেখাচ্ছে। এটা সত্যিই অসাধারণ. এই আমি খুঁজছি।
ইউনূস

4
যদি কারও পিছনে সক্ষম করার ক্ষেত্রে একই সমস্যা হয় - আপনি editText.setFocusableInTouchMode(true)পরিবর্তে কল করতে পারেন editText.setFocusable(true)
ডার্ট দেগা

61

ব্যবহারকারীর ইনপুট অক্ষম করতে এটি ব্যবহার করুন

android:focusable="false"

অ্যান্ড্রয়েড: সম্পাদনাযোগ্য = "মিথ্যা" এই পদ্ধতিটি হ্রাস করা।


1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। অন্যান্য উত্তরের পরামর্শ অনুসারে ইনপুট টাইপটিকে 'কিছুই নয়' তে সেট করা (সর্বদা) কাজ করে না। 'মিথ্যা' এ সক্ষম থাকা সেট করা সম্পাদনাটিকে বাধা দেয় তবে পাঠ্যটিও অন্ধকার করে যা পছন্দসই হতে পারে বা নাও পারে।
জেরি

36

সম্পাদনা অক্ষম করার জন্য EditText, আমি মনে করি আমরা focusable OR ব্যবহার করতে পারি enableতবে

  1. ব্যবহার android:enabled=...বাeditText.setEnabled(...)

    এছাড়া পরিবর্তন পাঠ্য রঙ EditTextধূসর হয়।
    ক্লিক করা হলে এর কোনও প্রভাব নেই

  2. ব্যবহার android:focusable=...বা editText.setFocusable(false)-editText.setFocusableInTouchMode(true)

    এটি ক্লিক করার সময় পাঠ্যের রঙ পরিবর্তন করে নাEditText
    এটি EditTextপ্রায় কয়েক মিলিসেকেন্ডের জন্য নীচের লাইনটি হাইলাইট করে

আউটপুট

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


19

android:editable="false"বর্ণিত হিসাবে । আপনি ইনপুট টাইপ TYPE_NULL ব্যবহার করতে পারেন editText উপর

এটি ব্যবহার করুন:

editText.setInputType(InputType.TYPE_NULL);

1
এই উত্তরটি পছন্দ হয়েছে কারণ এটি মাঠে অনক্লিকলিস্টনারকে অক্ষম করে না।
হর্ষ গণত্রা

ইনপুটটাইপ পাসওয়ার্ড হলে কী করবেন? TYPE_NULL পাসওয়ার্ডটি দৃশ্যমান করে।
ilamuromets

17

android:editable="false"অবহিত হিসাবে ইনxml

ব্যবহার করুন android:enabled="false"এটা সহজ। কেন আরও কোড ব্যবহার করবেন?

আপনি যদি চান তবে আপনি java classএই প্রোগ্রামটিও ব্যবহার করতে পারেন

 editText.setEnabled(false);

ব্যবহারের android: জন্য সক্ষম = "সত্য" সক্ষম
android_jain


5

শ্রেণিতে বৈশিষ্ট্যগুলির নীচে সেট করুন:

editText.setFocusable(false);
editText.setEnabled(false);

এটি আপনার প্রয়োজন মতো মসৃণভাবে কাজ করবে।


কেবলমাত্র enabledপর্যাপ্ত ছিল
১৯ ই

5

একটি সম্পাদনা পাঠের কার্যকারিতা অক্ষম করতে, কেবলমাত্র ব্যবহার করুন:

EditText.setInputType(InputType.TYPE_NULL);

আপনি যদি এটি কোনওভাবে সক্ষম করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

EditText.setInputType(InputType.TYPE_CLASS_TEXT);

ইনপুটটাইপ পাসওয়ার্ড হলে কী করবেন? TYPE_NULL পাসওয়ার্ডটি দৃশ্যমান করে।
ilamuromets

4

আপনি যদি android:editable="false"ব্যবহার করেন তবে গ্রহপটি আপনাকে এই বার্তাটি "অ্যান্ড্রয়েড: সম্পাদনাযোগ্য অবচিত করা হয়: পরিবর্তে ইনপুটটাইপ ব্যবহার করুন" মনে করিয়ে দেবে।

সুতরাং, আমি android:focusable="false"পরিবর্তে এটি ব্যবহার করি , এটি আমার পক্ষে ভাল কাজ করেছে।


4
android:editable="false"

এখন অবচয় এবং ব্যবহার করা হয়

 YourEditText.setInputType(InputType.TYPE_NULL);

ইনপুটটাইপ পাসওয়ার্ড হলে কী করবেন? TYPE_NULL পাসওয়ার্ডটি দৃশ্যমান করে।
ilamuromets

@ilyamuromets এই উত্তরটি যথাসাধ্য সাহায্যের stackoverflow.com/a/16720520/7704650 সঙ্গে TYPE_TEXT_VARIATION_PASSWORDঅনুসরণ এই আরো অনেক কিছুর জন্য developer.android.com/reference/android/text/InputType
emkarachchi

নরম কীবোর্ড খোলার সময় এবং ব্যবহারকারী পাঠ্য ইনপুট করার চেষ্টা করার সময় আমি সম্পাদনা পাঠের ইনপুটটি অক্ষম করতে চাই। ইনপুটটাইপ.টায়পাইএনএনএলএলটি ফোকাসেবল এবং ভুয়া মানতে ফোকাসেবলইনটচমোডের সাথে দুর্দান্ত কাজ করে। তবে যদি ইনপুট ক্ষেত্রের ইনপুট টাইপটি পাঠ্যপ্যাসওয়ার্ড হয় তবে ইনপুট টাইপ করুন Y TYPE_NULL পাসওয়ার্ডের মানটি দৃশ্যমান করে। যদি আমি ইনপুট টাইপ সেট করি T TYPE_NULL | ইনপুটটাইপ.TYPE_TEXT_VARIATION_PASSWORD তারপরে পাসওয়ার্ডও দৃশ্যমান হয় এবং ব্যবহারকারী পাঠ্য ইনপুট করে।
ilamuromets


3

অক্ষম করুন = ফোকাস + ক্লিক + কর্সার

ফোকাস, ক্লিক এবং কর্সার দৃশ্যমানতা অক্ষম করা আমার জন্য কৌশলটি করে।

এক্সএমএলে কোডটি এখানে

<EditText
    android:id="@+id/name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="false"
    android:cursorVisible="false"
    android:clickable="false"
    />

2

এটি আপনার সম্পাদনা পাঠ্য অক্ষম করে দেবে

editText.setEnabled(false);

এবং এটি ব্যবহার করে

editText.setInputType(InputType.TYPE_NULL);

কেবলমাত্র আপনার সম্পাদনা পাঠ্যকে আপনার সফটকিবোর্ডটি প্রদর্শন করবে না , তবে এটি কোনও ভৌত কীবোর্ডের সাথে সংযুক্ত থাকলে এটি আপনাকে টাইপ করতে দেয় let


ইনপুটটাইপ পাসওয়ার্ড হলে কী করবেন? TYPE_NULL পাসওয়ার্ডটি দৃশ্যমান করে।
ilamuromets

2

আমি গুগল সদ্য প্রকাশিত মেটালিয়াল ডিজাইন লাইব্রেরি ব্যবহার করি। আমার ক্ষেত্রে, যখন আমি অ্যান্ড্রয়েড ব্যবহার করি তখন এটি কাজ করে: ফোকাসযোগ্য = "মিথ্যা" এবং অ্যান্ড্রয়েড: কার্সারভিজিবল = "মিথ্যা"

<com.google.android.material.textfield.TextInputLayout
                    android:id="@+id/to_time_input_layout"
                    app:endIconMode="custom"
                    app:endIconDrawable="@drawable/ic_clock"
                    app:endIconContentDescription="ToTime"
                    app:endIconTint="@color/colorAccent"
                    style="@style/OutlinedEditTextStyle"
                    android:hint="To Time">

                    <com.google.android.material.textfield.TextInputEditText
                        android:id="@+id/to_time_edit_text"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:focusable="false"
                        android:cursorVisible="false" />

</com.google.android.material.textfield.TextInputLayout>

1

আমার ক্ষেত্রে আমার EditTextপাঠ্যটি যদি না হয় তবে স্ক্রোল করা দরকার । maxLinesঅক্ষম হলে লাইনগুলি অতিক্রম করে। এই বাস্তবায়ন আমার জন্য নিখুঁতভাবে কাজ করেছে।

private void setIsChatEditTextEditable(boolean value)
{
    if(value)
    {
        mEdittext.setCursorVisible(true);
        mEdittext.setSelection(chat_edittext.length());
       // use new EditText(getApplicationContext()).getKeyListener()) if required below
        mEdittext.setKeyListener(new AppCompatEditText(getApplicationContext()).getKeyListener());  
    }
    else
    {
        mEdittext.setCursorVisible(false);
        mEdittext.setKeyListener(null);
    }
}

1

এটি ব্যবহার করে দেখুন, আমার জন্য ভাল কাজ করে:

public class CustomEdittext extends EditText {

Boolean mIsTextEditor=true;
public CustomEdittext(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

@Override
public boolean onCheckIsTextEditor() {
    // TODO Auto-generated method stub
    return mIsTextEditor;
}


@Override
public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    mIsTextEditor=false;
    Boolean mOnTouchEvent=super.onTouchEvent(event);
    mIsTextEditor=true;     
    return mOnTouchEvent;
} }

দ্রষ্টব্য: this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); আপনার ক্রিয়াকলাপটি যুক্ত করতে keyboardহবে অন্যথায় প্রথমে পপআপ হবে ।


1

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

আপনি যদি এটি কেবল এক্সএমএল দিয়ে করতে চান তবে এটি কৌশলটি করেছে

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

            <EditText
                android:id="@+id/view_ads_search_select"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:focusable="true"
                android:clickable="true"/>  
       </YourFloatLabel>

আমি এডিট টেক্সট এর উপরে উপস্থিত হয়ে কেবল একটি ফ্রেমলআউট যোগ করি এবং এটি ফোকাসযোগ্য এবং ক্লিকযোগ্য সেট করে রাখি যাতে সম্পাদনা পাঠ্য ক্লিক করা যায় না।


0

এটি আমার পক্ষে কাজ করে:

অ্যান্ড্রয়েড focusable = "FALSE"


2
সম্পাথ কুমার ৪ বছর আগে যে পোস্ট করেছিলেন তার চেয়ে এটি কীভাবে আলাদা?
gobrewers14

0

গৃহীত উত্তরে @ অ্যাসিম্পোটের মন্তব্য থেকে, ব্যবহার করুন:

myEditText.setEnabled(false);
myEditText.setInputType(InputType.TYPE_NULL);

... এবং বব আপনার মামা।


0

আজ আমি এখনও ব্যবহার করি editable="false", তবে সাথেও focusable="false"

আমি মনে করি যে কেসটি আমাদের সম্পাদনা পাঠ্যকে অন-সম্পাদনযোগ্য করে তোলা দরকার, তা হ'ল কারণ আমরা এটির সম্পাদনা পাঠ্য শৈলীটি রাখতে চাই (সেই আন্ডারলাইন সহ ইঙ্গিত ইত্যাদি), তবে এটি পাঠ্যের পরিবর্তে অন্যান্য ইনপুট গ্রহণ করে। উদাহরণস্বরূপ একটি ড্রপডাউন তালিকা।

যেমন ব্যবহারের ক্ষেত্রে, আমাদের EditTextক্লিকযোগ্য হতে হবে (সুতরাং enabled="false"এটি উপযুক্ত নয়)। focusable="false"এই কৌশলটি করতে সেট করা যাইহোক, আমি এখনও দীর্ঘক্ষণ এডিট টেক্সট ধরে ধরে ক্লিপবোর্ড থেকে এটিতে আমার নিজের পাঠ্য আটকে দিতে পারি । আপনার কোডের উপর নির্ভর করে এবং এটি পরিচালনা করা এমনকি আপনার অ্যাপ্লিকেশনকে ক্রাশ করতে পারে।

সুতরাং আমিও ব্যবহার করেছি editable="false"এবং এখন সতর্কতা বাদে সবকিছু দুর্দান্ত।


0

আপনি ব্যবহার করতে পারেন android:focusable="false"তবে কার্সার অক্ষম করতে হবে অন্যথায় অনুলিপি / পেস্ট ফাংশনটি এখনও কাজ করবে।

সুতরাং, ব্যবহার

android:focusable="false"
android:cursorVisible="false"

0

একাধিক অক্ষম একাধিক স্তর অর্জন কিভাবে ছিল।

  • editText.setShowSoftInputOnFocus(false); এবং editText.setFocusable

EditTextকিছু পাঠ্যে কীবোর্ড দেখাতে বাধা দেয় । তবে কার্সারটি এখনও দৃশ্যমান এবং ব্যবহারকারী কিছু পাঠ্যে পেস্ট করতে পারেন।

  • editText.setCursorVisible(false)

কার্সারটি আড়াল করে। আপনি কেন এটি করতে চান তা নিশ্চিত নয়। ব্যবহারকারী পাঠ্য এবং পেস্ট ইনপুট করতে পারেন।

  • editText.setKeyListener(null)

আমি এই উপায় সবচেয়ে সুবিধাজনক মনে। ব্যবহারকারী কীভাবে পাঠ্য ইনপুট করতে পারে তার কোনও উপায় নেই, তবে উইজেট এখনও ব্যবহার করে OnClickListenerযদি আপনি এটির স্পর্শ করার সময় অ্যাকশন ট্রিগার করতে চান

  • editText.setEnabled(false);

সম্পূর্ণরূপে অক্ষম করে EditText। এটি আক্ষরিক 'কেবল পঠনযোগ্য', ব্যবহারকারী এতে কোনও পাঠ্য ইনপুট করতে পারবেন না এবং (উদাহরণস্বরূপ) এটি দিয়ে কাজ OnClickListener করে না

টেক্সটএডিট ডকুমেন্টেশন


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