2017-11-01 60 views
3

最近、Androidは、表示サイズと最小および最大テキストサイズに基づいてTextViewsテキストサイズのサイズ変更のサポートを追加しました。
https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview.htmlEditTextの自動サイズ変更

残念ながら、それらはEditTextをサポートしていないため、EditTextの他の選択肢はありますか? EditTextが¿のTextViewの子であるが、自動サイズ調整をサポートしていませんか?¿

+0

https://github.com/ViksaaSkool/AutoFitEditTextに役立ちますか? –

答えて

0

私はあなたのように貼り付けましたか、?

私はハックのいくつかの種類でこれを達成しています。 最初に私はEditTextViewで(Kotlinの)拡張機能としてコピーして実装するTextViewコードを見ましたが、大量のメソッドがありますので、最終的にそのオプションを破棄します。それは目に見えないのTextViewを使用することがあります私は持っているもの

、(はい私は知っている、完全なハックであることに非常に満足していないが、Googleはこのことについて恥じる必要があります)

これは私のXMLS

<TextView android:id="@+id/invisibleTextView" 
    android:layout_height="0dp" 
    android:layout_width="match_parent" 
    android:focusable="false" 
    app:autoSizeTextType="uniform" 
    app:autoSizeMinTextSize="@dimen/text_min" 
    app:autoSizeMaxTextSize="@dimen/text_max" 
    app:autoSizeStepGranularity="@dimen/text_step" 
    android:textAlignment="center" 
    app:layout_constraintLeft_toLeftOf="@id/main" 
    app:layout_constraintRight_toRightOf="@id/main" 
    app:layout_constraintTop_toBottomOf="@id/textCount" 
    app:layout_constraintBottom_toBottomOf="@id/main" 
    android:visibility="invisible" 
    tool:text="This is a Resizable Textview" /> 


<EditText android:id="@+id/resizableEditText" 
    android:layout_height="0dp" 
    android:layout_width="match_parent" 
    android:textAlignment="center" 
    app:layout_constraintLeft_toLeftOf="@id/main" 
    app:layout_constraintRight_toRightOf="@id/main" 
    app:layout_constraintTop_toBottomOf="@id/textCount" 
    app:layout_constraintBottom_toBottomOf="@id/main" 
    android:maxLength="@integer/max_text_length" 
    tool:text="This is a Resizable EditTextView" /> 
です

:これは、両方のビューには、私は私のEditTextView上で使用するには、こののTextViewからautocalculationsを使用する私のコードに続いて同じ幅/高さ

を持っていることが重要です。

private fun setupAutoresize() { 
    invisibleTextView.setText("a", TextView.BufferType.EDITABLE) //calculate the right size for one character 
    resizableEditText.textSize = autosizeText(invisibleTextView.textSize) 
    resizableEditText.setHint(R.string.text_hint) 

    resizableEditText.addTextChangedListener(object : TextWatcher { 
     override fun afterTextChanged(editable: Editable?) { 
      resizableEditText.textSize = autosizeText(invisibleTextView.textSize) 
     } 

     override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} 

     override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { 
      textCount.text = currentCharacters.toString() 
      val text = if (s?.isEmpty() ?: true) getString(R.string.text_hint) else s.toString() 
      invisibleTextView.setText(text, TextView.BufferType.EDITABLE) 
     } 
    }) 
} 

private fun autosizeText(size: Float): Float { 
    return size/(resources.displayMetrics.density + MARGIN_FACTOR /*0.2f*/) 
} 

ヒントのサイズを変更するには、このAndroid EditText Hint Sizeを使用してください。

私はそれは難しい問題を回避するだけど、少なくとも、我々はpropetaryまたは放棄さgithubのlibには失敗している間、これは、将来のバージョンの場合でも、サイズ変更可能な変更を作業を続けると確信しています。

私はいくつかの日を願って、Googleは

・ホープたちを聞くとチャイルズにこののwonderfull機能を実装し、我々はすべてこのようなものを避けることができ、これは

関連する問題