Android StudioTextViewの動的サイズ変更[複製]

Oct 06 2020

Javaコードを使用してテキストボックスのサイズを動的に変更しようとしています。幅に折り返しコンテンツを使用せず、dpの静的な数値を使用させたい。これをXMLファイルではなくJavaコードで実行したいと思います。リサイクラービューの各アイテムに適用したいので、このようにしたいと思います。複数の画面サイズで動作する必要があります。これは、テキストフィールドボックスサイズの最小の長さのように機能します。あなたがこれを行う方法を知っているなら、これは大いに理解されるでしょう。

回答

narcisdpr Oct 06 2020 at 18:59

これは自動サイズ設定と呼ばれ、Edit TexのリスナーであるTextChangedListenerを追加することで実行できます。このリスナーは、editTextの変更を監視し、3つの異なる状態があります。また、コンポーネント(カスタムビュー)を作成し、必要に応じてAppCompatTextView名から拡張することもできます。初期化では、以下のコードを追加できます。

public class CustomTextView extends AppCompatTextView {
Context ctx;

public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
ctx = context;
init();
}

public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
ctx = context;
init();
}

public CustomTextView(Context context) {
super(context);
ctx = context;
init();
}

  public void init() {
setOnTouchListener(null);
addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int  count) {
        if (getText().toString().length() > 10){
            setTextSize(TypedValue.COMPLEX_UNIT_SP, textSizeSmall);
        }
        else if (getText().toString().length() > 5){
            setTextSize(TypedValue.COMPLEX_UNIT_SP, textSizeMedium);
        }
    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});

}

また、これらをチェックしてください、それのためのドキュメントのトーンがあります:

Android用TextViewチュートリアルの自動サイズ設定

TextViewの自動サイズ設定

NihthiyaAlthaf Oct 06 2020 at 19:17

これはあなたを助けると思います。

LinearLayout.LayoutParams textParam = new LinearLayout.LayoutParams
                    (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);

textView.setLayoutParams(textParam);