web-dev-qa-db-fra.com

Définition de TextView TextAppeareance par programme dans android

Je vais implémenter un LinearLayout dans lequel les champs d'entrée sont générés par programme en fonction du nombre de champs de la table de base de données.

Malheureusement, lorsque j'essaie de définir l'attribut: textApperance comme textApperanceLarge dans le TextView, cela ne fonctionne pas. Voici mon code ...

for (int i = 0; i < selectedProducts; i++) {

            premLayout[i] = new LinearLayout(this);
            premLayout[i].setLayoutParams(new LinearLayout.LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
            premLayout[i].setOrientation(LinearLayout.HORIZONTAL);
            premLayout[i].setGravity(Gravity.TOP);

            premTextView[i] = new TextView(this);
            premTextView[i].setLayoutParams(new LinearLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
                    2.0f));
            premTextView[i].setTextAppearance(this, Android.R.attr.textAppearanceLarge);

            premTextView[i].setText(premiumChannels.get(i));
            premTextView[i].setId(i + 600);

            int px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics());
            premTextView[i].setWidth(px);

            premLayout[i].addView(premTextView[i]);
59
Raju yourPepe

Utilisez comme ça. Ça va marcher.

textView.setTextAppearance(this, Android.R.style.TextAppearance_Large);

Ou, depuis l'API 23, vous n'avez pas besoin de passer un contexte. Par conséquent, vous pouvez simplement appeler:

textView.setTextAppearance(Android.R.style.TextAppearance_Large);

Si vous souhaitez prendre en charge l'API 23 ou supérieure ou inférieure, vous pouvez utiliser la méthode ci-dessous pour simplifier votre tâche. Utilisez la méthode ci-dessous uniquement si vous ciblez déjà l'API 23 ou une version ultérieure. Si vous ciblez l'API est inférieure à 23, le code ci-dessous donnera une erreur car la nouvelle méthode n'y était pas disponible.

public void setTextAppearance(Context context, int resId) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        super.setTextAppearance(context, resId);
    } else {
        super.setTextAppearance(resId);
    }
}
189
Homam

Utilisez la méthode TextViewCompat.setTextAppearance() qui s'occupera de vos vérifications de version sdk.

11
Raghav Sharma