কীভাবে সম্পাদনা পাঠ্য সম্পাদনাযোগ্য নয় তবে জাভাতে ক্লিকযোগ্য make


91

EditTextক্লিকযোগ্য করে তোলা সম্ভব তবে সম্পাদনযোগ্য নয় কি?

আমি চাই না যে এটি সম্পাদনাযোগ্য হয় (কীবোর্ডটি আমাদের কাছে আসা উচিত নয় বা আমরা ইঙ্গিতটি পরিবর্তন করতে সক্ষম হওয়া উচিত)

আসলে আমি সম্পাদনা পাঠ্যকে কেবল একটি ইঙ্গিতযুক্ত চিত্র হিসাবে ব্যবহার করতে চাই (যা পরিবর্তন করা যায় না)। আমি জানি যে আসল উপায়টি ছিল একটি ImageViewএবং একটি ব্যবহার করা TextView, তবে আমি এটি দিয়ে চেষ্টা করতে চাই EditTextকারণ আমি তখন ২ এর পরিবর্তে কেবলমাত্র একটি ভিউ ব্যবহার করব Also এছাড়াও প্রতিটি জিনিস গতিশীল তাই কোনও এক্সএমএল নয়।

উপরের প্রয়োজনীয়তার জন্য এক্সএমএলে সমাধানটি android:editable="false"তবে জাভাতে আমি এটি ব্যবহার করতে চাই।

কিন্তু,

যদি আমি ব্যবহার করি: -

et.setEnabled(false);

বা

 et.setKeyListener(null);

এটি সম্পাদনাযোগ্য EditTextনয় তবে একই সাথে এটি অ ক্লিকযোগ্যও করে তোলে।


সেটিং সম্পর্কে কীভাবে et.setClickable(true)? এটি কাজ করতে পারে।
হেইন

ইতিমধ্যে চেষ্টা করা হয়েছে .... তবে কাজ হয়নি ... অন্য কোনও চিন্তাভাবনা
আমির শাহ

4
হতে পারে আপেক্ষিক লেআউটটি ব্যবহার করার চেষ্টা করুন এবং এডিটেক্সট এর শীর্ষে একটি খালি আয়তক্ষেত্র বা কিছু রাখুন, এবং রেক্টে ক্লিকযোগ্য জিনিস চেষ্টা করুন ..
ওয়াপস

উত্তর:


168

কৌশলটি এখানে:

et.setFocusable(false);
et.setClickable(true);

4
তবে আপনি যদি কোনও ক্ষেত্র থেকে কিছু মান অনুলিপি করে থাকেন তবে ল্যাং টেপ এবং পেস্ট টিপে সেই মান শ্রুতিটি পেস্ট করতে পারেন .. কীভাবে সরিয়ে নেওয়া যায় তার কোনও ধারণা
isষভ

11
@ আনিনজে আপনি দীর্ঘ ক্লিকযোগ্যকে মিথ্যা হিসাবে সেট করতে পারেন, যেমন, et.setLongClickable (মিথ্যা);
লুইস 15

হুম, কার্সারটি ক্লিক / লং ক্লিকের উপর একটি অদ্ভুত উপায়ে হাইলাইট করা হয়েছে ... তবে আমার কাছে এর চেয়ে ভাল পদ্ধতির নেই। : /
মার্টিন ফেফার

4
পারফেক্ট! আপনি এড়াতে অনুলিপির et.setLongClickable (মিথ্যা) যোগ করার জন্য / আটকানোর পাশাপাশি প্রয়োজন হতে পারে
thanhbinh84

4
পারফেক্ট, আপনি ডাক্তার?
ইমান মারাশি

22

EditTextফলস্বরূপ হিসাবে জাভা কোড ব্যবহার করে আপনি সেট করতে পারেন : -

edittext.setFocusable(false);
edittext.setClickable(true);

বা এক্সএমএল ফাইলের জন্য নীচে কোড ব্যবহার করে EditText

android:editable="false" 
android:inputType="none"  

22

হিসাবে editableঅসমর্থিত হয়েছে। আপনি ব্যবহার করতে পারেন android:inputTypeযেমন কেউ নকশা XML- এর বা InputType.TYPE_NULL কোডিং হবে।

এক্সএমএল ডিজাইন করা হচ্ছে

<android.support.v7.widget.AppCompatEditText
    android:id="@+id/edt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:focusable="false"
    android:inputType="none"
    android:text="EditText"/>

কোডিং

edt.setClickable(true);
edt.setFocusable(false);
edt.setInputType(InputType.TYPE_NULL);

এবং নীচে ক্লিক ইভেন্ট রয়েছে edittext

edt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(YourActivity.this,"edt click", Toast.LENGTH_LONG).show();
    }
});

আমার জন্য কবিতার মতো কাজ করেছেন
করিম বিবার্স

8

আপনি এটি ব্যবহার করতে পারেন ..

android:focusableInTouchMode="false"

এক্সএমএল এডিটেক্সট সম্পাদনাযোগ্য না করার জন্য এবং ক্লিকযোগ্য ইভেন্টের জন্য আপনি setOnTouchListener () ইভেন্টটি একই জিনিসটি করতে ব্যবহার করতে পারেন ..

editText.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
                        //do your stuff here..
        return false;
    }
});

4
দেখে মনে হচ্ছে অ্যান্ড্রয়েড ও- android:focusableInTouchMode="false"তেও প্রয়োজন ( android:focusable="false"একা কাজ করে না) D কমপক্ষে, ডিপি 2 এ।
এক্সপ

7

android:editable অবচিত করা হয়েছে তবে আপনি নীচের মতো স্টিগ করতে পারেন:

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

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


7

Edittext এটির মতো সম্পাদনার জন্য সক্ষম এবং অক্ষম করুন

EditText edit = (EditText) findviewby(R.id.edittext);

জাভা কোডের মাধ্যমে

edit.setEnabled(false); //non editable
edit.setEnabled(true); //editable

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

<EditText
    android:id="@+id/otp_mpin"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:editable="false"
    android:focusable="false"/>

0

আমার জন্য কোনও উত্তরই পুরোপুরি কার্যক্ষম সমাধানের ফলাফল হিসাবে আসে না।

আমার ফিক্সের শোকেস https://www.youtube.com/watch?v=oUA4Cuxfdqc

গাইড (নুব-বান্ধব) , দয়া করে কোডটিতে কয়েকটি মন্তব্য নোট করুন।

এডিটটেক্সটডিপাস্তেচড। জাভা EditTextনামে একটি কাস্টমটির জন্য একটি জাভা ক্লাস তৈরি করুন

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.RelativeLayout;

/**
 * @author Martin Pfeffer
 * @see <a href="https://celox.io">https://celox.io</a>
 */
public class EditTextDispatched extends android.support.v7.widget.AppCompatEditText {

    private static final String TAG = "DispatchingEditText";

    private boolean editable = true;

    public EditTextDispatched(Context context) {
        super(context);
    }

    public EditTextDispatched(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public EditTextDispatched(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    // get the current state
    public boolean isEditable() {
        return editable;
    }

    // set your desired behaviour
    public void setEditable(boolean editable) {
        this.editable = editable;
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent motionEvent) {

        if (editable) {
            // default behaviour of an EditText
            super.dispatchTouchEvent(motionEvent);
            return true;
        }

        // achieve the click-behaviour of a TextView (it's cuztom)
        ((RelativeLayout) getParent()).onTouchEvent(motionEvent);
        return true;
    }

}

EditTextDispatchedআপনার এক্সএমএলটিতে উল্লেখ করুন (আপনাকে পিজকে-নাম পরিবর্তন করতে হবে):

  <io.celox.brutus.EditTextDispatched
    android:id="@+id/row_field_value"
    style="@style/row_field_text_display"
    android:layout_alignParentBottom="true"
    android:text="@string/sample_field_value" />

আহবান জানাতে:

private void changeEditTextBehaviour(EditTextDispatched value, boolean editable) {
    value.setEditable(editable);
    value.setEnabled(editable);
}


0

আমি জানি এই প্রশ্নের ইতিমধ্যে উত্তর দেওয়া হয়েছে তবে অনুরোধ করা (যেমন নন-ইনপুট বা সম্পাদনাযোগ্য) প্রভাব অর্জন করতে আমি যে সেটআপটি ব্যবহার করি তা এখানে আরও বর্তমান (অর্থাত্ 2018) উত্তর দেওয়ার জন্য:

    val etUserLoc: EditText = themedEditText(R.style.Pale_Blue_Text_Bold_13) {
                id = R.id.et_comp_user_keys_var_user_location
                inputType = InputType.TYPE_NULL
                isClickable = true
                isFocusable = false
                textColor = resources.getColor(R.color.magenta)  // overrides the default theme color
                text = Editable.Factory.getInstance().newEditable(resources.getString(R.string.loc_swakopmund))
            }.lparams(width = matchConstraint, height = matchParent) {   }

হ্যাঁ, এটি আনকো যেহেতু আমি আর কোনও Android প্রকল্পে এক্সএমএল ব্যবহার করি না। 'ইনপুটটাইপ' 'isdable' অবমূল্যায়নের যত্ন নেয়।


0

২০২০ সাল পর্যন্ত, আপনি যদি অ্যাক্সেসযোগ্যতার বিষয়েও চিন্তা করেন তবে আপনার সেটিংস এড়ানো উচিত et.setFocusable(false);কারণ এটি সম্পাদনা পাঠ্যকে কীবোর্ড নেভিগেশন ব্যবহার করে অ্যাক্সেসযোগ্য নয়।

এখানে আমার সমাধান:

কোটলিন

editText.isFocusableInTouchMode = false

editText.isLongClickable = false //this will prevent copy and paste

editText.setOnClickListener {
   // handle the click
   // this will automatically make the edittext clickable = true
}

-1

আপনার কাছে কি করতে পারেন android:inputMethod="@null"আপনার EditTextএবং এটি কার্সার বা কীবোর্ড প্রদর্শিত হবে না এবং তারপর আপনি সহজে শ্রোতা সেটিং মাধ্যমে ক্লিক উপলব্ধি করতে পারেন।

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