Redimensionnement dynamique d'Android Studio TextView [duplicate]
J'essaye de redimensionner une zone de texte dynamiquement en utilisant du code Java. Je veux que la largeur n'utilise pas de contenu enveloppant mais utilise un nombre statique dans dp. Je veux que cela soit fait en code Java au lieu du fichier XML. Je le veux comme ça parce que je veux l'appliquer à chaque élément de la vue de recyclage. Il doit fonctionner avec plusieurs tailles d'écrans. Cela fonctionnera comme une longueur min pour une taille de zone de texte. Si vous savez comment faire, cela serait très appericaiated.
Réponses
cela s'appelle le dimensionnement automatique et cela peut être fait en ajoutant TextChangedListener qui est un écouteur pour Edit Tex. cet auditeur surveille les changements de editText et il a trois états différents. vous pouvez également créer un composant (vue personnalisée) et l'étendre à partir du nom AppCompatTextView comme vous le souhaitez; dans son initialisation, vous pouvez ajouter le code ci-dessous:
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) {
}
});
}
Vérifiez également ces derniers, il y a un ton de documentation pour cela:
Tutoriel de dimensionnement automatique de TextView pour Android
Dimensionnement automatique des TextViews
Je crois que ceci vous aidera..
LinearLayout.LayoutParams textParam = new LinearLayout.LayoutParams
(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);
textView.setLayoutParams(textParam);