577

EditTextアンダーバー(最後に小さなセリフがあるプロンプト行)を非表示にするにはどうすればよいですか?

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

ただし、同じレイアウトを使用して(他のロジックを簡略化して)、同じデータを読み取り専用で表示したい場合があります。プレゼンテーションを同じようにしたいのですが、同じ高さと同じフォントである必要がありますが、アンダーバーはありません。

一時的な対策として、EditTextを削除し、TextViewに置き換えることでこれを実装します。それで望ましい結果が得られると思いますが、属性を変更することで簡単にできるはずのことを行うには、費用のかかる方法のようです。

4

27 に答える 27

1219

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

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

また

android:background="@null"

またはプログラムで

editText.setBackgroundResource(android.R.color.transparent);
于 2012-12-20T15:38:19.220 に答える
106

背景をnullに設定します。

android:background="@null"
于 2015-03-09T11:53:07.550 に答える
43

EditTextbackgroundTint値を特定の色に設定できます。透明色を設定すると、アンダーバーがなくなります。

android:backgroundTint="@color/Transparent"

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

Api v21(Lollipop)ただし、これはそれ以上で使用できます

于 2015-12-03T14:21:10.467 に答える
26

エディットテキストの背景を次のように設定してください

android:background="#00000000"

それが動作します。

于 2014-11-16T16:19:12.590 に答える
24

あなたはそれをプログラム的に使用することができますsetBackgroundResource

editText.setBackgroundResource(android.R.color.transparent);
于 2016-12-12T11:46:15.427 に答える
16

私がしたことは、Shapeドローアブルを作成し、それを背景として設定することでした。

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

注:私は実際にfireldsの値を使用@dimenしましたが、わかりやすくするためにここではシェープファイルを簡略化しています。@color

于 2016-02-22T16:03:07.660 に答える
16

いずれかのプロパティを使用する:

android:background="@null"

また

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

EditTextの下線を非表示にするために私のために働いた。

ただし、その場合、私が囲んでいるTextInputLayoutで間隔の問題が発生することに注意してください。EditText

于 2016-05-25T03:01:34.117 に答える
12

デフォルトのパディングを台無しにせずに非表示にする方法は次のとおりです。

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)

アップデート:

常にnullを渡すことに気付いた場合は、メソッドでそれを成文化することができます(そして、EditText自体をオーバーロードすることもできます)

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()
于 2018-02-13T13:57:12.983 に答える
11

TextInputLayout内でEditTextを使用している場合は、次のように使用します。app:boxBackgroundMode="none"

<com.google.android.material.textfield.TextInputLayout
    app:boxBackgroundMode="none"
    ...
    >

    <EditText
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</com.google.android.material.textfield.TextInputLayout>
于 2020-08-06T10:36:23.060 に答える
10

私の場合、テキストの編集にカスタムの背景を使用していたので、背景を@nullに設定したり、色合いを透明に設定したりすることは私にとって解決策ではなかったので、私は非常にうまく機能する小さなトリックをプレイしました。

android:inputType="textVisiblePassword"

そしてそれは仕事をかなりうまくやり遂げます..それは最適な解決策ではありませんが、それは機能します

于 2019-09-26T21:25:46.597 に答える
7

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"
            />
于 2018-03-13T20:18:01.300 に答える
5

私は非常に便利なこのようなものを持っています:

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であるためです。)当たり前かもしれませんが、指摘することが重要だと思います。

于 2018-08-28T07:13:53.083 に答える
5

単にこれを使用してください

 editText.setBackgroundColor(Color.TRANSPARENT);
于 2018-11-30T08:39:24.740 に答える
4

私は最も奇妙なことを発見しました!nullデータバインディング を使用するように設定した場合:android:background="@{null}"

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

すべてのAPIレベルで同じ最終結果が得られるとは限らないため、注意してください。あなたがこれをテストして、それが信頼できると思うかどうか誰かが私に言います。(また、元のアンダーラインが原因で下のパディングが目立つことに注意してください。したがって、XMLで変更するか、同じ上にロードされた後にコードでリセットすることをお勧めします...

于 2017-04-04T04:14:55.910 に答える
4

編集テキストにすでに背景がある場合は、以下を使用できます。

android:textCursorDrawable="@null"
于 2017-07-27T08:05:16.377 に答える
4

これを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でアプリ全体の下線が削除され、手動ですべてのスタイルにスタイルを適用する必要がなくなります。

于 2018-07-31T13:17:47.000 に答える
2

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" />
于 2018-01-23T12:15:42.860 に答える
2
android:background="@android:color/transparent"

または

android:background="@null"
于 2019-03-20T06:32:15.847 に答える
1

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

使用からxmlandroid:background="@null"

于 2018-10-19T05:39:18.147 に答える
1
android:inputType="textVisiblePassword|textMultiLine"
android:background="@android:color/transparent"

...最適なソリューションではありませんが、機能します。

于 2019-11-29T20:00:19.773 に答える
1

XMLエディットテキストでこのコードを使用する

android:background="@android:color/transparent"
于 2021-09-07T08:04:44.023 に答える
0

背景をnullに設定

android:background="@null" in your xml 
于 2019-03-16T06:24:38.180 に答える
0

バックグラウンドを使用している場合は、このタグを使用する必要があります

android:testCursorDrawable="@null" 
于 2019-03-16T06:30:14.533 に答える
0

私の場合は、editText.setBackgroundResource(R.color.transparent);が最適です。

バーのすぐ下にあるデフォルトのパディングは削除されません。

R.color.transparent = #00000000

于 2019-04-29T09:27:14.370 に答える
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" />
于 2019-11-13T11:08:31.043 に答える
0

他のオプションとして、次のように独自のカスタムEditTextを作成できます。

class CustomEditText : androidx.appcompat.widget.AppCompatEditText {
    constructor(context: Context?) : super(context)
    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)

    private val paint = Paint()
    private val path = Path()

    init { // hide your underbar
        this.setBackgroundResource(android.R.color.transparent)

        // other init stuff...
    }

    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)

        // draw your canvas...
    }
}
于 2020-08-28T12:31:26.377 に答える
0

固定ヒントについては、これを使用してください

        <item name="boxStrokeWidth">0dp</item>
        <item name="boxCornerRadiusTopStart">12dp</item>
        <item name="boxCornerRadiusTopEnd">12dp</item>
        <item name="boxCornerRadiusBottomStart">12dp</item>
        <item name="boxCornerRadiusBottomEnd">12dp</item>
于 2021-09-10T10:51:06.080 に答える