singleLine
は、次のようなTextView
およびEditText
のxmlレイアウトファイルで使用されます。
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:singleLine="true" />
一部の人々 on SO say singleLine
は非推奨ですが、 他の人々 はまだ使用することを提案しています。 maxLines="1"
は機能しません。 ( here 、 here 、および here を参照)
ドキュメントは、この質問に答えるために行くべき場所です。 ここで、彼らは言う:
この定数はAPIレベル3で廃止されました
この属性は非推奨です。代わりに
maxLines
を使用して静的テキストのレイアウトを変更し、編集可能なテキストビューの代わりにinputType属性でtextMultiLine
フラグを使用します(singleLineとinputTypeの両方が指定されている場合、inputTypeフラグがオーバーライドしますsingleLineの値)。
ただし、 TextView docs では、 Android:singleLine
またはfor setSingleLine
またはfor setTransformationMethod
。比較すると、同じTextViewドキュメントでは、STATUS_BAR_HIDDEN
およびfitSystemWindows
は非推奨です。 singleLine
の非推奨は省略ですか、それは「非推奨」でしたか?
この質問は 以前に尋ねられました ですが、質問の主な焦点ではありませんでした(そして答えられませんでした)。
あなたの質問に対する答えは、すでにSO リンク先の投稿 のいずれかにあると思います。残念ながら、singleLines
の廃止は黒白問題ではありません。
それはis非推奨ですが、notいつでもどこでもすぐに行くことです。
後継のmaxLines
に比べてパフォーマンスが低いため、廃止されました。 SingleLineTransformationMethod
を使用して、高さを「ジャスト」調整するTextView
とは異なり、maxLines
に配置した文字列の改行とキャリッジリターンを置き換えます。 TextView
の行数に基づいており、文字列の置換は行いません。
この文字の置換方法は、singleLine
が 予期しない方法で壊れる になる可能性があることも意味しました(たとえば、カスタムフォントを使用する場合)。これらのパフォーマンスと信頼性の問題が原因で廃止されました。
ただし、はどこにも行きません。なぜなら、、あなたがリンクしたSO投稿として、多くの古いAndroidアプリケーションでまだ使用されているからです- andそれでも有用な場合があります(たとえば、1行にentireテキストを表示し、復帰と改行を無視する場合)。
非推奨は必ずしもAPIがなくなることを意味しないことに注意してください。これは、その使用が推奨されていないことを意味しますが、許可される場合があります。
非推奨の属性が変更で追加されました d24b8183b9 これは、Googleの内部SCMからのダンプにすぎません:
//branches/cupcake/...@130745からの自動インポート
変更からわかるように、_core/res/res/values/attrs.xml
_ diff は@deprecated docコメントを追加しますが、_core/Java/Android/widget/TextView.Java
_ diff はsetSingleLine()
のドキュメントコメント。
Googleの内部SCM履歴にアクセスできないと、_attrs.xml
_ docコメントで上記の変更を正確に引き起こした原因を知ることはできませんが、質問については
singleLine
の非推奨は省略ですか、それは「非推奨」でしたか?
可能な答えの1つは次のとおりです。TextView
の単一行は非推奨ではなく、「非推奨」でもありませんが、ビューが編集可能か、パスワードフィールドか、単一/マルチラインネス。
TextView
(v5.1.0 r1)の公式grepcodeで:
Android:singleLine
には@Deprecated
アノテーションが付いていません。
setInputType
メソッドにもこれがあります:
boolean singleLine = !isMultilineInputType(type);
// We need to update the single line mode if it has changed or we
// were previously in password mode.
if (mSingleLine != singleLine || forceUpdate) {
// Change single line mode, but only change the transformation if
// we are not in password mode.
applySingleLine(singleLine, !isPassword, true);
}
setInputType
はmSingleLine
値をオーバーライドします。
編集:このxml属性は正式に廃止されました。 ( API 3?以降 )。 AndroidStudio xmlエディターで表示できるようになりました。
singleLine
IS非推奨。説明は不要です。
唯一の問題は、間違ったドキュメントです。
「編集可能なテキストビューの代わりにtextMultiLine
属性でinputType
フラグを使用する」は、singleLine
を使用して達成したいことの正反対です。
代わりにAndroid:inputType="text"
。
。
Android Studio 2.2.1は非推奨としてsingleLineにフラグを立てます。
Android:singleLine="false"
うまく機能しますが、
Android:maxLines="2"
ではない。
Android Studioは非推奨であると主張していますが、実際には、単一行のみを許可する編集テキストがありました。
maxLines="1"
を追加すると、改行文字が許可されるようになりましたが、これは私たちのニーズには適していません。
そこで、singleLine="true"
の使用に戻りました。
ディスカッションに情報を追加するために、Lintには次のエラーがあります。
「ellipsize
とmaxLines=1
を組み合わせると、一部のデバイスでクラッシュする可能性があります。lintの以前のバージョンでは、singleLine=true
をmaxLines=1
に置き換えることをお勧めしますが、ellipsize
。
詳細: https://issuetracker.google.com/issues/369500 "
だから、singleLine
が今だと思うし、新しい用語を思い付くべきだと思う...「非推奨」?
Android:inputType="text"
を追加し、Android:maxLines="1"
を削除しましたが、うまくいきました。
Android:maxLines="1"
およびAndroid:minLines="1"
を提供するだけでは、キーボードactionNext
関連の問題を解決できません。同じためにAndroid:inputType="text"
を使用します。
簡単な代替方法、使用:Android:maxLines="1"