どうやってEditTextの下のバー(端に小さなセリフが付いているPrompt行)を隠すことができますか?
私がやりたいことをするもっと良い方法があるかもしれません:私はEditTextのレイアウトを持っています。通常、これはユーザーがタップしてテキストの入力または編集を開始できる場所では正常に表示されます。
ただし、同じデータを読み取り専用で表示するために同じレイアウトを使用したい(他のロジックを単純化する)場合があります。私はプレゼンテーションが似ていることを望みます - それは同じ高さと同じフォントを持つべきですが、アンダーバーを持つべきではありません。
対策として、EditTextを削除してTextViewを代用することでこれを実装します。これは望ましい結果をもたらすと思いますが、属性を変更することによって簡単に実行できるはずの何かを実行するための高価な方法の回り道のようです。
あなたはEditText
をカスタムの透明なドロウアブルを持つように設定するか、単に使用することができます。
Android:background="@Android:color/transparent"
または
Android:background="@null"
背景をnullに設定します。
Android:background="@null"
EditText
のbackgroundTint
値を特定の色に設定できます。透明色を設定すると、アンダーバーは消えます。
Android:backgroundTint="@color/Transparent"
<color name="Transparent">#00000000</color>
しかし、これはApi v21(Lollipop)
以上で使えます
編集テキストの背景を次のように設定してください。
Android:background="#00000000"
それが動作します。
setBackgroundResource
を使ってプログラム的にそれを行うことができます。
editText.setBackgroundResource(Android.R.color.transparent);
どちらかのプロパティを使う:
Android:background="@null"
OR
Android:background="@Android:color/transparent"
editTextの下線を隠すために私のために働きました。
ただし、それがTextInputLayoutでスペースの問題を引き起こしていることに注意してください。私はEditText
を囲んでいます。
デフォルトのパディングを損なうことなく、これを隠す方法は次のとおりです。
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)
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
の値を使用しましたが、ここでは明確にするために形状ファイルを単純化しました。
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"
/>
あなたの編集テキストがすでに背景を持っているなら、あなたは以下を使うことができます。
Android:textCursorDrawable="@null"
私はこのようなものを持っていてとても役に立ちます。
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だから。それは明白かもしれないが、私はそれを指摘することが重要だと思う。
私は最も興味があることを発見しました!データバインディングを使用してそれをnull
に設定した場合:Android:background="@{null}"
その後、背景が削除されるだけでなく、ビューにはデフォルトの背景から計算された余白が残っています。それで、なんらかの理由で、遅延null設定は前のbgからのパディングをクリアしません。ビューの余白は、(エミュレータレベル21から)左/上/右4dp、下13dpです。
すべてのAPIレベルで同じ結果になるとは限りませんので、注意してください。これをテストして信頼できると誰かが教えてください。 (また、下線はオリジナルの下線が付いているため突き出ていることに注意してください。そのため、XMLで変更するか、コードをロードした後でコード内でリセットするとよいでしょう。
単にこれを使う
editText.setBackgroundColor(Color.TRANSPARENT);
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でアプリ全体の下線が削除されます。また、スタイルを手動で適用する必要はありません。
プログラム的に使用:editText.setBackground(null)
xml
から使用:Android:background="@null"
Android:background="@Android:color/transparent"
または
Android:background="@null"
私の場合はeditText.setBackgroundResource(R.color.transparent);
が一番です。
デフォルトのパディングは削除されず、すぐ下に表示されます。
R.color.transparent = #00000000
背景をnullに設定します
Android:background="@null" in your xml
バックグラウンドを使用している場合は、このタグ「Android:testCursorDrawable = "@ null"」を使用する必要があります。