Redimensionamento dinâmico do Android Studio TextView [duplicado]

Oct 06 2020

Estou tentando redimensionar uma caixa de texto dinamicamente usando o código Java. Eu quero que a largura não use conteúdo de quebra, mas usando um número estático em dp. Quero que isso seja feito no código Java em vez do arquivo XML. Eu quero assim porque quero aplicá-lo a cada item da lista de reciclagem. Ele precisa funcionar com vários tamanhos de tela. Funcionará como um comprimento mínimo para um tamanho de caixa de campo de texto. Se você souber fazer isso, ficaria muito appericiado.

Respostas

narcisdpr Oct 06 2020 at 18:59

isso é chamado de dimensionamento automático e pode ser feito adicionando TextChangedListener, que é um ouvinte para Edit Tex. esse ouvinte observa as alterações de editText e tem três estados diferentes. também você pode criar um componente (visualização personalizada) e estendê-lo a partir do nome AppCompatTextView como desejar; em sua inicialização você pode adicionar o código abaixo:

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) {

    }
});

}

também verifique isso, há um tom de documentação para isso:

Tutorial de TextView de dimensionamento automático para Android

Dimensionamento automático de TextViews

NihthiyaAlthaf Oct 06 2020 at 19:17

Eu acho que isso vai te ajudar..

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

textView.setLayoutParams(textParam);