Dynamische Größenänderung Android Studio TextView [Duplikat]

Oct 06 2020

Ich versuche, die Größe eines Textfelds mithilfe von Java-Code dynamisch zu ändern. Ich möchte, dass die Breite keinen Umbruchinhalt verwendet, sondern eine statische Zahl in dp. Ich möchte, dass dies in Java-Code anstelle der XML-Datei erfolgt. Ich möchte, dass es so ist, weil ich es auf jedes Element in der Recycling-Ansicht anwenden möchte. Es muss mit mehreren Bildschirmgrößen arbeiten. Es funktioniert wie eine minimale Länge für eine Textfeldgröße. Wenn Sie wissen, wie man das macht, wäre das sehr wichtig.

Antworten

narcisdpr Oct 06 2020 at 18:59

Dies wird als automatische Größenänderung bezeichnet und kann durch Hinzufügen von TextChangedListener erfolgen, einem Listener für Edit Tex. Dieser Listener überwacht die Änderungen von editText und hat drei verschiedene Status. Sie können auch eine Komponente (benutzerdefinierte Ansicht) erstellen und diese nach Belieben aus dem AppCompatTextView-Namen erweitern. In der Initialisierung können Sie den folgenden Code hinzufügen:

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

    }
});

}}

Schauen Sie sich auch diese an, es gibt einen Ton der Dokumentation dafür:

Automatisches TextView-Tutorial für Android

Automatische Größenanpassung von Textansichten

NihthiyaAlthaf Oct 06 2020 at 19:17

Ich denke das wird dir helfen ..

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

textView.setLayoutParams(textParam);