এডিট টেক্সটে আন্ডারবার কীভাবে আড়াল করবেন


496

আমি কীভাবে editText আন্ডারবার (শেষের দিকে সামান্য সেরিফ সহ প্রম্পট লাইন) আড়াল করতে পারি?

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

কখনও কখনও, তবে, একই পাঠ্যকে কেবল পঠনযোগ্য উপায়ে প্রদর্শন করতে আমি একই লেআউটটি (অন্যান্য যুক্তি সহজ করে) ব্যবহার করতে চাই। আমি উপস্থাপনাটি একইরকম হতে চাই - এতে একই উচ্চতা এবং একই ফন্ট থাকতে হবে তবে আন্ডারবারটি না থাকা উচিত।

একটি স্টপ-ফাঁক পরিমাপ হিসাবে, আমি এডিটেক্সট মুছে ফেলা এবং একটি টেক্সটভিউ প্রতিস্থাপনের মাধ্যমে এটি বাস্তবায়ন করতে যাচ্ছি। আমি মনে করি এটি পছন্দসই ফলাফলগুলি দেবে, তবে এটি এমন একটি ব্যয়বহুল উপায় যা গুণাবলীর পরিবর্তন করে সহজেই করা উচিত do


উত্তর:


1052

আপনি EditTextএকটি কাস্টম স্বচ্ছ অঙ্কনযোগ্য বা কেবল ব্যবহারের জন্য সেট করতে পারেন

android:background="@android:color/transparent"

অথবা

android:background="@null"

বা প্রোগ্রামগতভাবে

editText.setBackgroundResource(android.R.color.transparent);

7
হাই 1 ইজেনের হিসাবে সর্বোত্তম উত্তরটি হ'ল একটি কাস্টম আঁকতে সক্ষম। সাধারণ সম্পাদনা পাঠ্য ক্ষেত্রগুলির জন্য ব্যবহৃত 9-প্যাচ দিয়ে শুরু করুন। আপনি চাই না এমন আন্ডারবার এবং অন্যান্য গ্রাফিকগুলি সরিয়ে ফেলার জন্য এটি সংশোধন করুন। এটির সাহায্যে আপনার পরিবর্তিত এডিটেক্সটটির সাধারণ সম্পাদনা পাঠ্য ক্ষেত্রের সমান মার্জিন এবং সামগ্রিক উপস্থিতি থাকবে। আপনি যদি কেবল ব্যাকগ্রাউন্ডটি বাতিল করতে চান তবে এটি মার্জিনটি হারাবে।
পেরি হার্টম্যান

124
এটি ব্যবহার করুন:android:background="@android:color/transparent"
dd619

3
আমার যদি ইতিমধ্যে অন্য রঙের পটভূমি থাকে, ধূসর বলতে দিন, কীভাবে আন্ডারবার / আন্ডারলাইন সরিয়ে ফেলবেন সেই ক্ষেত্রে?
নরেন্দ্র সিং

6
অ্যান্ড্রয়েড 19-এ, android:background="@android:color/transparent"মার্জিন ইস্যুতে একই ক্ষতির কারণ হয় ... এমন কোনও কাস্টম অঙ্কনযোগ্য কারও কারও উদাহরণ নেই?
এন্টি আর্থ

2
আমরা জাভাতে প্রোগ্রামগতভাবে কীভাবে পারি?
জগদীশ

100

নালায় পটভূমি সেট করুন।

android:background="@null"

2
এটি ব্যাকগ্রাউন্ডের মতো = "# 00000000"। সত্যিই কাজ করে না।
পেরি হার্টম্যান

14
এটি আমার পক্ষে কাজ করেছে তবে আমি শেষ করেছি android:background="@android:color/transparentকারণ @nullভীতিজনক।
ডিক লুকাস

3
@ রিচার্ড কেন @nullভীতিজনক?
মাইকেল

@ নাল কোনও পটভূমির অস্তিত্ব নির্দেশ করবে। যদি আমরা ব্যাকগ্রাউন্ড = "# 00000000" নির্দিষ্ট করি তবে এটি আলফা মান "0" সহ সাদা পটভূমি আঁকবে।
বিনায়ক ভি নায়েক

2
"@ নুল" জ্বলজ্বলে কার্সারটিও আড়াল করে, "@ অ্যান্ড্রয়েড: রঙ / স্বচ্ছ" নয়।
লুকাস নোভাক

37

আপনি সেট করতে পারেন EditTextএর backgroundTintএকটি নির্দিষ্ট রঙ মান। আপনি যদি স্বচ্ছ রঙ সেট করেন তবে আন্ডারবারে চলে যাওয়া উচিত।

android:backgroundTint="@color/Transparent"

<color name="Transparent">#00000000</color>

তবে আপনি এটি Api v21(Lollipop)উচ্চতর বা উচ্চতর ব্যবহার করতে পারেন


পুরো দৃশ্যের পটভূমি পরিবর্তনের চেয়ে এটি আরও ভাল (অন্যান্য উত্তরগুলির হিসাবে প্রস্তাবিত হয়)
অ্যালেক্স সেমেনিয়ুক

26

আপনার সম্পাদনা পাঠ্য পটভূমি হিসাবে সেট করুন

android:background="#00000000"

এটা কাজ করবে।


3
এটি কাজ বাছাই করবে, তবে সঠিকভাবে নয়। আপনি যদি কেবল ব্যাকগ্রাউন্ডটি সরিয়ে থাকেন তবে আপনি মাঠের চারপাশের মার্জিনগুলিও হারাবেন - এগুলি ডিফল্ট পটভূমির অংশ। সঠিক সমাধান একটি ভিন্ন পটভূমি যে কেবল, এটা বারটির নেই @ ha1ogen যেমন প্রস্তাব দেওয়া প্রতিস্থাপন হয়
Peri Hartman

1
এই প্রোগ্রামটি কীভাবে পূর্বাবস্থায় ফিরিয়ে আনবেন
তুষার নারানগ

23

আপনি প্রোগ্রামগতভাবে এটি ব্যবহার করে করতে পারেন setBackgroundResource:

editText.setBackgroundResource(android.R.color.transparent);

আমি জানি না কেন, তবে এটি কাজ করে না। লাইনটি এখনও আছে
সৈয়দ হিসান

15

আমি যা করেছি তা হ'ল একটি শেপ আঁকিয়ে তৈরি করা এবং এটি ব্যাকগ্রাউন্ড হিসাবে সেট করা:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <padding
        android:top="8dp"
        android:bottom="8dp"
        android:left="8dp"
        android:right="8dp" />

    <solid android:color="#fff" />

</shape>

দ্রষ্টব্য: আমি প্রকৃতপক্ষে আগুনের জন্য ব্যবহার করেছি @dimenএবং @colorমানগুলি দিয়েছি, তবে স্বচ্ছতার জন্য আমি আকৃতি ফাইলটি এখানে সরলীকৃত করেছি।


1
এটিও একটি পুরোপুরি ভাল বিকল্প। এটি একটি কাস্টম অঙ্কনযোগ্য সেট করার ক্ষেত্রে তারতম্য।
পেরি হার্টম্যান

15

উভয় সম্পত্তি ব্যবহার:

android:background="@null"

অথবা

android:background="@android:color/transparent"

আমার পক্ষে সম্পাদনা পাঠের আন্ডারলাইনটি আড়াল করার জন্য কাজ করেছিল।

যাইহোক, নোট করুন যে এরপরে এটি টেক্সটইনপুটলয়আউটটি যে আমি ঘিরে রেখেছি তার সাথে একটি ফাঁকা সমস্যা তৈরি করে EditText


1
ব্যবধান সমস্যাটি ত্রুটি বিন্যাস থেকে আসে। ফিক্স করার মিথ্যা অ্যাপ্লিকেশানে TextInputLayout এর errorEnabled সম্পত্তি সেটে: errorEnabled = "FALSE"
Ulbo

11

ডিফল্ট প্যাডিংটি বিনষ্ট না করে এটিকে আড়াল করার একটি উপায় এখানে:

fun View.setViewBackgroundWithoutResettingPadding(background: Drawable?) {
    val paddingBottom = this.paddingBottom
    val paddingStart = ViewCompat.getPaddingStart(this)
    val paddingEnd = ViewCompat.getPaddingEnd(this)
    val paddingTop = this.paddingTop
    ViewCompat.setBackground(this, background)
    ViewCompat.setPaddingRelative(this, paddingStart, paddingTop, paddingEnd, paddingBottom)
}

ব্যবহার:

editText.setViewBackgroundWithoutResettingPadding(null)

হালনাগাদ:

আপনি যদি নিজেকে সর্বদা শূন্য হয়ে যেতে দেখেন তবে আপনি সেই পদ্ধতিতে কোডটি করতে পারেন (এবং তারপরে আপনি নিজেই সম্পাদনা পাঠ্য ওভারলোডও করতে পারেন)

fun EditText.removeUnderline() {
    val paddingBottom = this.paddingBottom
    val paddingStart = ViewCompat.getPaddingStart(this)
    val paddingEnd = ViewCompat.getPaddingEnd(this)
    val paddingTop = this.paddingTop
    ViewCompat.setBackground(this, null)
    ViewCompat.setPaddingRelative(this, paddingStart, paddingTop, paddingEnd, paddingBottom)
}

// usage:
editText.removeUnderline()

এই উত্তরটি নিখুঁত এবং গ্রহণ করা উচিত। এটি ডিফল্ট প্যাডিং বাদ না দিয়ে পটভূমি সরিয়ে ফেলতে পারে।
পঙ্কজ কুমার

6

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

        <EditText
            android:id="@+id/et_card_view_list_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minWidth="30dp"
            android:layout_weight="1"
            android:inputType="text"
            android:text="Name"
            android:background="@android:color/transparent"
            />

5

আমার ক্ষেত্রে আমি পাঠ্য সম্পাদনা করার জন্য কাস্টম ব্যাকগ্রাউন্ড ব্যবহার করছিলাম সুতরাং @ নালকে ব্যাকগ্রাউন্ড সেট করা বা স্বচ্ছ রঙের চিত্র নির্ধারণ করা আমার পক্ষে সমাধান ছিল না তাই আমি কিছু কৌশল খেলি যা আমার পক্ষে খুব সুন্দরভাবে কাজ করেছিল আমি ঠিক সেট করেছি

android:inputType="textVisiblePassword"

এবং এটি কাজটি বেশ ভালভাবে সম্পন্ন হয় .. এটি সর্বোত্তম সমাধান নয় তবে এটি কাজ করে


1
আমি এটি স্বচ্ছ পটভূমির সাথে একত্রে পছন্দ করি কারণ এটি টাইপ করার সময় পাঠ্যের নীচে প্রদর্শিত বারটি লুকিয়ে রাখে - আমি যা চাই তা হ'ল পাঠ্য, কোনও সাজসজ্জা নয়।
19 ক্র্যাগ

1
এই উত্তরটি কেবলমাত্র আমার জন্য কাজ করেছে যেহেতু আমার সম্পাদনা বাক্সগুলি প্রোগ্রামাগুলিভাবে তৈরি করা হয়েছে এবং প্রত্যেকের পৃথক পটভূমির রঙ রয়েছে যাতে পটভূমিটি শূন্য হতে না পারে এবং পিতামাতার পটভূমির রঙের উপর নির্ভর করতে পারে না
শ্যারোন লেভ

4

যদি আপনার সম্পাদনা পাঠ্যের ইতিমধ্যে পটভূমি থাকে তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন।

android:textCursorDrawable="@null"

যদিও এটি প্রশ্নটি সমাধান করে না এটি আমার পক্ষে সহায়ক ছিল।
রুবান ভিগুয়েরা

4

আপনি যদি এডিটেক্সট এর সমস্ত দৃষ্টান্ত এবং এর থেকে উত্তরাধিকার সূত্রে প্রাপ্ত কোনও শ্রেণিকে প্রভাবিত করতে চান তবে আপনার থিমটিতে এডিটেক্সটব্যাকগ্রাউন্ড বৈশিষ্ট্যটির জন্য মানটি সেট করা উচিত।

  <item name="android:editTextBackground">@drawable/bg_no_underline</item>

আমি ব্যবহারযোগ্য অঙ্কনযোগ্য উদাহরণ:

<inset xmlns:android="http://schemas.android.com/apk/res/android"
     android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
     android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
     android:insetTop="@dimen/abc_edit_text_inset_top_material"
     android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
    <selector>
      <item android:drawable="@android:color/transparent"/>
    </selector>
</inset>

এটি ডিফল্ট উপাদান নকশা বাস্তবায়ন কি সামান্য পরিবর্তিত সংস্করণ।

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


4

আমার এ জাতীয় কিছু রয়েছে যা খুব দরকারী:

generalEditText.getBackground().mutate().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);

যেখানে জেনারেল এডিটটেক্সটটি হ'ল আমার সম্পাদনা পাঠ এবং রঙ সাদা:

<color name="white">#ffffff</color>

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

আপনি যদি ব্যবহার android:background="@null" অনেকগুলি প্রস্তাবিত করেন প্যাডিং হারাবেন এবং সম্পাদনা পাঠ্য আরও ছোট হবে। কমপক্ষে, এটি আমার ক্ষেত্রে ছিল।

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



3

আমি আবিষ্কার করলাম সবচেয়ে কৌতূহলী জিনিস! আপনি যদি nullডেটা বাইন্ডিং ব্যবহার করে সেট করে থাকেন : android:background="@{null}"

তারপরে কেবল পটভূমিটি সরানো হবে না, তবে এখনও ভিউটিতে প্যাডিং রয়েছে যা ডিফল্ট ব্যাকগ্রাউন্ড থেকে গণনা করা হয়েছিল। সুতরাং কোনও কারণে পিছিয়ে নাল সেটিংস পূর্ববর্তী বিজি থেকে প্যাডিং সাফ করে না ..? ভিউতে প্যাডিং বাম / উপরে / ডান 4dp, নীচে 13 ডিপি (এমুলেটর স্তর 21 থেকে)।

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


2

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

কোডটি রেজ / মান / স্টাইলস.এক্সএমএল রাখুন

<style name="MyEditTextStyle" parent="@android:style/TextAppearance.Widget.EditText">
    <item name="android:background">@color/transparence</item> //NO UNDERBAR
    <item name="android:maxLines">1</item>
    <item name="android:height">28dp</item> //COMMON HEIGHT
</style>

এর পরে আপনার এডিট টেক্সট এ কেবল এটি কল করতে হবে

<EditText
    android:id="@+id/edit1"
    style="@style/MyEditTextStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<EditText
    android:id="@+id/edit2"
    style="@style/MyEditTextStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

1

প্রোগ্রামগতভাবে ব্যবহার করুন: editText.setBackground(null)

xmlব্যবহার থেকে :android:background="@null"



1

অ্যান্ড্রয়েড: ইনপুটটাইপ = "টেক্সটভিজিবলপ্যাসওয়ার্ড | টেক্সট মাল্টিলাইন" অ্যান্ড্রয়েড: পটভূমি = "@ অ্যান্ড্রয়েড: রঙ / স্বচ্ছ"

... এটি সর্বোত্তম সমাধান নয় তবে এটি কার্যকর।


0

নালায় ব্যাকগ্রাউন্ড সেট করুন

android:background="@null" in your xml 

0

আমার ক্ষেত্রে, editText.setBackgroundResource(R.color.transparent);সেরা।

এটি কেবলমাত্র বারের অধীনে ডিফল্ট প্যাডিং সরিয়ে দেয় না।

R.color.transparent = #00000000



0

মার্জিন এবং পটভূমি রঙ ব্যবহার উভয়ই ধরে রাখতে:

background.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <padding
        android:bottom="10dp"
        android:left="4dp"
        android:right="8dp"
        android:top="10dp" />

    <solid android:color="@android:color/transparent" />

</shape>

লেখা সম্পাদনা:

<androidx.appcompat.widget.AppCompatEditText
    android:id="@+id/none_content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background"
    android:inputType="text"
    android:text="First Name And Last Name"
    android:textSize="18sp" />
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.