web-dev-qa-db-ja.com

EditTextでアンダーバーを隠す方法

どうやってEditTextの下のバー(端に小さなセリフが付いているPrompt行)を隠すことができますか?

私がやりたいことをするもっと良い方法があるかもしれません:私はEditTextのレイアウトを持っています。通常、これはユーザーがタップしてテキストの入力または編集を開始できる場所では正常に表示されます。

ただし、同じデータを読み取り専用で表示するために同じレイアウトを使用したい(他のロジックを単純化する)場合があります。私はプレゼンテーションが似ていることを望みます - それは同じ高さと同じフォントを持つべきですが、アンダーバーを持つべきではありません。

対策として、EditTextを削除してTextViewを代用することでこれを実装します。これは望ましい結果をもたらすと思いますが、属性を変更することによって簡単に実行できるはずの何かを実行するための高価な方法の回り道のようです。

391
Peri Hartman

あなたはEditTextをカスタムの透明なドロウアブルを持つように設定するか、単に使用することができます。

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

または

Android:background="@null"
855
ha1ogen

背景をnullに設定します。

Android:background="@null"
94
Vinayak V Naik

EditTextbackgroundTint値を特定の色に設定できます。透明色を設定すると、アンダーバーは消えます。

Android:backgroundTint="@color/Transparent"

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

しかし、これはApi v21(Lollipop)以上で使えます

25
Yasin Kaçmaz

編集テキストの背景を次のように設定してください。

Android:background="#00000000"

それが動作します。

24
kishore kumar

setBackgroundResourceを使ってプログラム的にそれを行うことができます。

editText.setBackgroundResource(Android.R.color.transparent);
19
Roberto

どちらかのプロパティを使う:

Android:background="@null"

OR

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

editTextの下線を隠すために私のために働きました。

ただし、それがTextInputLayoutでスペースの問題を引き起こしていることに注意してください。私はEditTextを囲んでいます。

14
AjayCodes

デフォルトのパディングを損なうことなく、これを隠す方法は次のとおりです。

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)
10

Shape drawableを作成し、それを背景に設定することでした。

<?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の値を使用しましたが、ここでは明確にするために形状ファイルを単純化しました。

9
Paul LeBeau

MinWidthも設定する必要があります。そうしないと、テキストが空の場合はカーソルが消えます。

        <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
live-love

あなたの編集テキストがすでに背景を持っているなら、あなたは以下を使うことができます。

Android:textCursorDrawable="@null"
4
AKASH WANGALWAR

私はこのようなものを持っていてとても役に立ちます。

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

generalEditTextは私のEditTextで、色は白です。

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

これはパディングを削除せず、あなたのEditTextはそのままになります。一番下の行だけが削除されます。このようにする方が便利なことがあります。

あなたがAndroid:background="@null"を多くの人が示唆しているように使うと、パディングを失い、EditTextは小さくなります。少なくとも、それは私の場合でした。

ちょっとしたメモは、あなたがbackground nullをセットして、上で提供されたJavaコードを試みるならば、あなたのアプリはそれを実行した直後にクラッシュするでしょう。それは背景を得るがそれはnullだから。それは明白かもしれないが、私はそれを指摘することが重要だと思う。

4
bengongon97

私は最も興味があることを発見しました!データバインディングを使用してそれをnullに設定した場合:Android:background="@{null}"

その後、背景が削除されるだけでなく、ビューにはデフォルトの背景から計算された余白が残っています。それで、なんらかの理由で、遅延null設定は前のbgからのパディングをクリアしません。ビューの余白は、(エミュレータレベル21から)左/上/右4dp、下13dpです。

すべてのAPIレベルで同じ結果になるとは限りませんので、注意してください。これをテストして信頼できると誰かが教えてください。 (また、下線はオリジナルの下線が付いているため突き出ていることに注意してください。そのため、XMLで変更するか、コードをロードした後でコード内でリセットするとよいでしょう。

3
androidguy

単にこれを使う

 editText.setBackgroundColor(Color.TRANSPARENT);
2
prashant kute

EditTextのSTYLEを定義して、すべてのプロパティを共通に再グループ化することもできます。あなたが動作をする必要があるテキストを複数編集する必要がある場合、それは非常に強力です。

コードをres/values/styles.xmlに置きます。

<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でそれを呼び出す必要があるだけです。

                   <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" />

これをEditTextのすべてのインスタンスとそれを継承するクラスに適用する場合は、属性editTextBackgroundに値を設定する必要があります。

  <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>

これは、デフォルトの材料設計の実装が少し修正されたものです。

適用すると、すべてのEditTextでアプリ全体の下線が削除されます。また、スタイルを手動で適用する必要はありません。

2
kingargyle

プログラム的に使用:editText.setBackground(null)

xmlから使用:Android:background="@null"

1
Shubham Kaushik
Android:background="@Android:color/transparent"

または

Android:background="@null"

私の場合はeditText.setBackgroundResource(R.color.transparent);が一番です。

デフォルトのパディングは削除されず、すぐ下に表示されます。

R.color.transparent = #00000000

0
HJ Song

背景をnullに設定します

Android:background="@null" in your xml 
0
Jocelin

バックグラウンドを使用している場合は、このタグ「Android:testCursorDrawable = "@ null"」を使用する必要があります。

0
ATIQ UR REHMAN