অ্যান্ড্রয়েডে এক্সএমএলের মাধ্যমে সম্পাদনাযোগ্য কীভাবে সম্পাদনা পাঠ্য করবেন?


300

EditTextএক্সএমএল এর মাধ্যমে কীভাবে সম্পাদনাযোগ্য না করা যায় তা আমাকে কেউ বলতে পারেন ? আমি সেট android:editableকরার চেষ্টা করেছি false, কিন্তু

  1. এটি অবমূল্যায়ন করা হয়; এবং
  2. এটা কাজ করে না।

6
যদি সম্পাদনাযোগ্য না হয় তবে আপনার সম্পাদনা পাঠের দরকার হবে কেন? একটি সাধারণ টেক্সটভিউ ব্যবহার করা কি যথেষ্ট হবে? এবং সেটএডেবল () ফাংশনটিও হ্রাস করা হয়?
কিকি 4

4
আমার জন্য বিষয়বস্তুগুলির জন্য স্ট্যান্ডার্ড কপি পেস্ট সক্ষম করার জন্য এটি অর্থবোধ করে। একটি টেক্সটভিউ দিয়ে এটি সম্ভব নয় (কমপক্ষে ডিফল্ট আচরণ নয়)
আইএক্সএক্স

1
সংশোধন: এটি একটি খারাপ ধারণা। নির্দিষ্ট পরিস্থিতিতে পরিস্থিতিতে দৃশ্য সম্পাদনযোগ্য হয়ে যায়, বা অনুলিপি পেস্টের বিকল্পগুলি আর প্রদর্শিত হয় না। অন্যান্য পদ্ধতির সন্ধান করবে।
আইএক্সএক্স

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

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

উত্তর:


399

এই সাধারণ কোডটি ব্যবহার করুন:

textView.setKeyListener(null);

এটা কাজ করে।

সম্পাদনা করুন: KeyListenerপরে যুক্ত করতে নিম্নলিখিতগুলি করুন

1: ট্যাগে কী শ্রোতাদের সেট করুন textView

textView.setTag(textView.getKeyListener());
textView.setKeyListener(null);

2: ট্যাগ থেকে মূল শ্রোতা পান এবং এটিকে আবার সেট করুন textView

textView.setKeyListener((KeyListener) textView.getTag());

30
@ অঙ্কিতআওস্তি পাঠ্য ভিউ.সেটট্যাগ (টেক্সটভিউ.সেটকেজিস্টাইনার ()); পাঠ্য ভিউ.সেটকি-লিসটনার ((কীলিস্টেনার) পাঠ্য ভিউ.সেটটাগ ()) দিয়ে এটি পরে সেট করুন;
থমাস ডিগানান

@TomDignan এ সহজেই দুর্দান্ত উপায়! আমার একটি প্রশ্ন ছিলো. কীলিস্টেনারের প্রয়োজনীয় ডিফল্ট মানগুলি কি কোনওভাবেই এটি পরিবর্তন করে, যেমন setFocusable()ডক বলে যে পরিবর্তিত হলে ডিফল্ট বাস্তবায়ন পরিবর্তিত হতে পারে।
অ্যান্ডি

আফিক না, ট্যাগটি আপনার ব্যবহারের জন্য উপলব্ধ থাকতে হবে
টমাস ডিগানান

আরে আপনার পরামর্শটি আমাকে সহায়তা করেছে .. ধন্যবাদ
ব্যবহারকারী 1387035

38
প্রশ্নটি এক্সএমএল এর মাধ্যমে সেট করার বিষয়ে ছিল , কেন এটি সমাধান হিসাবে চিহ্নিত হয়েছে?
ভিটালি

398

এটি আপনার এডিটেক্সট এক্সএমএল ফাইলটিতে যুক্ত করুন:

<EditText ...
        android:clickable="false" 
        android:cursorVisible="false" 
        android:focusable="false" 
        android:focusableInTouchMode="false">
</EditText>

এটি হিসাবে একই প্রভাব করবে android:editable="false"। আমার জন্য কাজ করেছেন, আশা করি এটি আপনার জন্যও কাজ করবে।


3
notes.setKeyListener (নাল); notes.setClickable (মিথ্যা); notes.setCursorVisible (মিথ্যা); notes.setFocusable (মিথ্যা); notes.setFocusableInTouchMode (মিথ্যা);
জ্যাক ফ্রাজন

3
আপনি যদি এটি এক্সএমএল করতে চান ... এটির সাথে টেক্সটভিউয়ের মধ্যে তফাত কী হবে ???
ক্রিস সিম

11
পার্থক্যটি এটি সহ ব্যবহার করা যেতে পারেTextInputLayout
আহমাদালিবালোচ

2
এটি সমাধান হিসাবে চিহ্নিত করা উচিত, কারণ এটি প্রশ্নের খালি অনুরোধ হিসাবে খাঁটি এক্সএমএল সমাধান।
zgc7009

2
এটি
অবচয়

54

আপনার সম্পাদনাটি হতে দিন be

EditText editText;

editText.setKeyListener(null);

কাজ করবে তবে এটি কীগুলি শুনছে না।

ব্যবহারকারী সম্পাদনা পাঠ্যে একটি কার্সার দেখতে পাবে।

আপনি চেষ্টা করতে পারেন editText.setEnabled(false);

তার মানে ব্যবহারকারী কার্সারটি দেখতে পাবে না। সহজভাবে বলতে গেলে তা হয়ে উঠবে TextView


3
এডিটেক্সটটি পাঠ্য ভিউয়ের একটি সাবক্লাস হওয়ায় এটি সঠিক। তবে, পাঠ্য ভিউয়ের পরিবর্তে ভেরিয়েবল হিসাবে এডিট টেক্সট ব্যবহার করুন।
জো প্লান্ট

@ জো প্ল্যান্ট পরিবর্তিত পরিবর্তনশীল নামটি গঠনমূলক মন্তব্যের জন্য ধন্যবাদ।
মাহেন্দ্রন

এটি সম্পাদনা পাঠ্যকে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ধাপে ছুঁড়ে ফেলা হয়
স্টিফেন

ধূসর এডিটেক্সট ইঙ্গিত করে যে এটি অক্ষম এবং ব্যবহারকারী এটি সম্পাদনা করতে পারে না।
মাহেন্দ্রন

রঙ সেট করার পাশাপাশি ধূসর চেহারা রোধ করবে। এক্সএমএল: অ্যান্ড্রয়েড চেষ্টা করুন: পাঠ্য রঙ = "@ রঙ / কালো" অ্যান্ড্রয়েড: সক্ষম = "মিথ্যা"
লাল ওয়াইন

32

অন্যান্য উত্তরে উল্লিখিত হিসাবে, আপনি একটি করতে পারেন setEnabled(false) তবে যেহেতু আপনি এটি এক্সএমএলের মাধ্যমে কীভাবে সেট করবেন তা জিজ্ঞাসা করছেন, এটি এটি কীভাবে করবেন।

আপনার সাথে নিম্নলিখিত বৈশিষ্ট্য যুক্ত করুন EditText:

android:enabled="false"

4
ওপিএস প্রশ্নের সঠিক উত্তর।
এসএমআর

তবে এই পদ্ধতিটি অবমূল্যায়ন করা হয়েছে
ললিত কুমার

2
@ ললিতকুমারকে অবহেলা enabledকরা হয়নি। editableহয়।
উন্মাদতানাবুন

7
সক্ষম করে, আমরা ক্লিক শ্রোতাদেরও অ্যাক্সেস করতে পারি না। আমার জন্য এটি উত্তর না।
নাভিদ আহমদ

এটি হাইড টেক্সট :(
চেগো

24

এক্সএমএল (এক লাইন) থেকে অক্ষম করুন:

 android:focusable="false"

জাভা থেকে পুনরায় সক্ষম করুন, প্রয়োজন হলে (এছাড়াও একটি লাইন):

editText.setFocusableInTouchMode(true);

ভাল উত্তর. এইভাবে আপনি এখনও editText.setText ("আপনার পাঠ্য") ব্যবহার করে editText মান সেট করতে পারেন। তবে ব্যবহারকারী এটি সম্পাদনা করতে পারবেন না।
প্রকাশ

17

তারা "সম্পাদনযোগ্য" অবমূল্যায়ন করেছেন তবে ইনপুট টাইপের ক্ষেত্রে কোনও কাজ করে না।

যাইহোক, ইনপুটটাইপ = "কিছুই নয়" এর কোনও প্রভাব আছে? এটি ব্যবহার করা বা না করা আমার দেখা যতদূর দেখা যায় না।

উদাহরণস্বরূপ, ডিফল্ট এডিটেক্সটকে বলা হয় একক লাইন। এটির একক লাইন হওয়ার জন্য আপনাকে একটি ইনপুট টাইপ নির্বাচন করতে হবে। এবং যদি আপনি "কিছুই না" নির্বাচন করেন তবে এটি এখনও বহুজাতিক multi


1
এটি সমস্ত ডিভাইসে কোনও পার্থক্য করে না , তবে ডক্স অনুসারে এটি হওয়া উচিত : বিকাশকারী.অ্যান্ড্রয়েড.
com

12
গুগল মেসের একটি সুন্দর উদাহরণ
ইয়ার


13

আপনি যেমন অ্যান্ড্রয়েড উল্লেখ করেছেন: সম্পাদনাযোগ্য হ্রাস করা হয়। অ্যান্ড্রয়েড: ইনপুটটাইপ = "কিছুই নয়" এর পরিবর্তে ব্যবহার করা উচিত তবে এটি বাগের কারণে কাজ করে না ( https://code.google.com/p/android/issues/detail?id=2854 )

তবে আপনি একই জিনিস ফোকাসেবল ব্যবহার করে অর্জন করতে পারেন।

এক্সএমএল মাধ্যমে:

<EditText ...
        android:focusable="false" 
</EditText>

কোড থেকে:

((EditText) findViewById(R.id.LoginNameEditText)).setFocusable(false);

গুগলের সৌজন্যে, বাগটি দুটি ভিন্ন দৃশ্যে পড়বে: ১) এটি ঠিক হয়ে যাবে তবে years বছর পরে ২.) এটি কখনই ঠিক করা হবে না, তারা কেবল অ্যান্ড্রয়েডের নতুন সংস্করণ বিকাশ করবে।
নিওন ওয়ার্জ

12

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

        android:focusable="false"

8

শুধু ব্যবহার android:enabled="false"। এটি এটিকে একটি চেহারা দেয় EditTextযা এটি সম্পাদনযোগ্য নয় বলে দেখায়।


7
<EditText
    android:id="@+id/txtDate"
    android:layout_width="140dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="2dp"
    android:clickable="false"
    android:cursorVisible="false"
    android:gravity="center" />

এবং নিম্নলিখিত ব্যবহার:

txtDate.setKeyListener(null);

7

আপনি যদি জাভা কোডে এটি করতে চান তবে কেবল এটি অক্ষম করতে এই লাইনটি ব্যবহার করুন:

editText.setEnabled(false);

এবং এটি এটি সক্ষম করতে:

editText.setEnabled(true);

5

আমি চেষ্টা করেছিলাম:

textView.setInputType( InputType.TYPE_NULL );

যা কাজ করা উচিত, তবে আমার পক্ষে তা হয়নি।

আমি এই কোডটি দিয়ে শেষ করেছি:

textView.setKeyListener(new NumberKeyListener() {
    public int getInputType() {
        return InputType.TYPE_NULL;
    }

    protected char[] getAcceptedChars() {
        return new char[] {};
    }
});

যা নিখুঁতভাবে কাজ করে।


4

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

মূল বিন্যাসে বৈশিষ্ট্য যুক্ত করা হচ্ছে

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

এবং তারপরে সম্পাদনা পাঠ্য ক্ষেত্র

android:focusable="false"
android:focusableInTouchMode="false"

এখানে একটি উদাহরণ:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/activity_home"
    android:background="@drawable/bg_landing"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true"
    tools:context="com.woppi.woppi.samplelapp.HomeActivity">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@null"
        android:inputType="textPersonName"
        android:ems="10"
        android:id="@+id/fromEditText"
        android:layout_weight="1"
        android:hint="@string/placeholder_choose_language"
        android:textColor="@android:color/white"
        android:textColorHint="@android:color/darker_gray"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:onClick="onSelectFromLanguage" />

</RelativeLayout>

3

@ মাহে মাদি ছাড়াও আপনি এটি ব্যবহার করে দেখতে পারেন

editText.setEnabled(false);
editor.setTextColor(Color.BLACK);

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

এবং এডিট টেক্সট-এ ফিরে যেতে কেবল সম্পাদনা পাঠের সমস্ত বৈশিষ্ট্য অর্জন করার জন্য এটি করুন।

editText.setEnabled(true);

আশা করি এটা সাহায্য করবে :)


3

আপনি ব্যবহার করতে পারেন android:editable="false"তবে আমি আপনাকে সত্যিই ব্যবহার করার পরামর্শ দেবsetEnabled(false) কারণ এটি ব্যবহারকারীর জন্য একটি ভিজ্যুয়াল ক্লু সরবরাহ করে যা নিয়ন্ত্রণ সম্পাদনা করা যায় না। সমস্ত অক্ষম উইজেট দ্বারা একই ভিজ্যুয়াল কিউ ব্যবহার করা হয় এবং ধারাবাহিকতা ভাল।


3
android:focusable="false"

android:clickable="false"

android:longClickable="false"

"দীর্ঘ ক্লিকযোগ্য" বৈশিষ্ট্যটি দীর্ঘ প্রেস ক্রিয়াগুলি অক্ষম করে যা "আটকানো" এবং বা "সরঞ্জাম নির্বাচন করুন" বিকল্প হিসাবে একটি সরঞ্জামদণ্ড হিসাবে প্রদর্শিত হবে।


2

আমি নিম্নলিখিত চেষ্টা করেছি:

codeEditText.setInputType(InputType.TYPE_NULL);

this.codeEditText.setOnFocusChangeListener(new OnFocusChangeListener() {

  @Override
  public void onFocusChange(View v, boolean hasFocus) {

    if (hasFocus) {

      pickCode();

    }

  }

});
this.codeEditText.setOnClickListener(new OnClickListener() {

  @Override
  public void onClick(View v) {

    pickCode();

  }

});

তবে সমস্যাটি হ'ল যদি সম্পাদনা পাঠ্যটি ফর্মের মধ্যে প্রথম হয় তবে এটি ফোকাস পায় এবং পিককোড () কোড যা একটি নতুন ক্রিয়াকলাপ প্রবর্তন করে তাকে সরাসরি বলা হয়। সুতরাং আমি কোডটি নিম্নরূপে সংশোধন করেছি এবং এটি বেশ ভালভাবে কাজ করছে বলে মনে হচ্ছে (ব্যতীত আমি পাঠ্য সম্পাদনার উপরে ফোকাস সেট করতে পারি না তবে আমার প্রয়োজন হয় না):

itemCodeEditText.setFocusable(false);

this.itemCodeEditText.setOnClickListener(new OnClickListener() {

  @Override
  public void onClick(View v) {

    pickItem();

  }

});

শুভেচ্ছান্তে,

মন্তব্য স্বাগত,

জন গোচে


1
ঠিকঠাক কাজ করছে বলে মনে হচ্ছে, তবে এডিট টেক্সটের মতো দেখতে টেক্সটভিউ ব্যবহার করা কি সহজ নয় (ব্যবহার করে: শৈলী = "@ অ্যান্ড্রয়েড: স্টাইল / উইজেট।এডিটটেক্সট")?
অ্যান্ড্রয়েড বিকাশকারী

2

আমি EditText.setFocusable(false)সম্পাদনা করতে চাইলে আমি আবার সত্য ব্যবহার করে থাকি।



2

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

android:enable="true"
android:textIsSelectable="true"
android:inputType="none"

1

অ্যান্ড্রয়েড: সম্পাদনাযোগ্য হ্রাস করা হয় তাই পরিবর্তে ইনপুট টাইপ ব্যবহার করুন।

   <EditText
        android:id="@+id/editText_x"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="70"
        android:inputType="none"
        android:hint="@string/enter_x" />

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

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

আপনার পরামর্শটি পপআপ উইন্ডো সহ সম্পাদনা পাঠ্যক্রমের জন্য প্রযোজ্য নয়, সমস্যাটি আরও ভালভাবে বুঝতে এই চিত্রটি দেখুন । এই উদাহরণে আমি একটি সম্পাদনা পাঠের চেহারাটি দেখতে চাই তবে কেবল পপআপ উইন্ডো দ্বারা ব্যবহারকারীটির মান পরিবর্তন করতে আমাকে "এটি" লক করতে হবে। আরও প্রেরণা দেখতে এই সমস্যাটি দেখুন। এটি একটি সমস্যা 2009 সাল থেকে প্রায় যে
Denys Vitali

1

আমি একই সমস্যার মুখোমুখি হয়েছি কিন্তু পর্যবেক্ষণের পরে আমি দেখতে পেলাম যে android:editable="false"কেবল তখনই কাজ করছে যখন ইনপুট টাইপ ( android:inputType="ANY_VALUE") না থাকে editText দেওয়া।

এডিটেক্সট থেকে ইনপুট টাইপ সরান এবং সম্পাদনযোগ্য = মিথ্যা, এটির কাজ ঠিক আছে use


0

আমি একটি সংলাপ দিয়ে এটি সমাধান।

    AlertDialog dialog;
    EditText _editID;
    TextView _txtID;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);
        _txtID = (TextView) findViewById(R.id._txtID);
        dialog = new AlertDialog.Builder(this).create();
        _editID = new EditText(this);
        _editID.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED);
        dialog.setTitle("Numero do Registro:");
        dialog.setView(_editID);
        dialog.setButton(DialogInterface.BUTTON_POSITIVE, "IR", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                _txtID.setText(_editID.getText());
                toId(Integer.parseInt((_editID.getText().toString())));
            }
        });
        dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "CANCELAR", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

        _txtID.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                _txtID.setText("_editID.getText()");
                //_editID.setText("");
                dialog.show();

            }
        });

0

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



-10

এই কোড ব্যবহার করে দেখুন। এটি আমার প্রকল্পে কাজ করছে, সুতরাং এটি আপনার প্রকল্পে কাজ করবে।

android:editable="false"

2
আমি নিশ্চিত করতে পারি যে এটি কাজ করে না এবং অবজ্ঞাত পদ্ধতি ব্যবহার করে আরও কী প্রস্তাবিত নয়।
অ্যাডোরজান প্রিনজ

1
অ্যান্ড্রয়েড: আপনি যদি ক্ষেত্রটি ক্লিকযোগ্য হতে পারে তবে সম্পাদনযোগ্য নয়, অর্থাত্ ক্লিক করার পরে একটি ডায়ালগ খোলার জন্য সম্পাদনাযোগ্য হ'ল সর্বোত্তম সমাধান।
ইয়ার

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