android changer listview la police et la couleur
J'ai trouvé des charges de différentes façons d'accomplir cela, mais je ne suis pas sûr de ce qui est le mieux pour mon scénario.
C'est mon code Java pour la liste:
ListView lv;
lv = (ListView) findViewById(R.id.favList);
C'est le code xml de la liste:
<ListView
android:id="@+id/favList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="20dp"
android:background="@android:color/transparent"
android:cacheColorHint="@android:color/transparent"
android:listSelector="@android:color/transparent" >
</ListView>
Pour un affichage de texte, je voudrais ajouter:
final Typeface fontList = Typeface.createFromAsset(assets, "optima-extra-black.ttf");
lv.setTypeface(fontList);
Mais cela ne fonctionne pas pour les listviews.
Comment puis-je changer ma police dans ce cas?
Oke j'y suis presque...
J'ai besoin d'accéder à mon actif, mais je ne peux pas partir à l'intérieur de mon adaptateur personnalisé.
J'ai essayé d'utiliser final AssetManager assets = this.getAssets();
mais qui ne m'obtenez pas tout autre..
Comment faire pour remédier à cette situation?
class Myadapter extends BaseAdapter {
LayoutInflater lif;
ImageView sideArrow;
TextView tv;
public Myadapter(Context ctx) {
lif = (LayoutInflater) ctx
.getSystemService(LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return favarets.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = lif.inflate(R.layout.inflate, null);
sideArrow = (ImageView) vi.findViewById(R.id.imageViewsidemark);
tv = (TextView) vi.findViewById(R.id.textFav);
tv.setText(favarets.get(position));
final AssetManager assets = this.getAssets();
final Typeface tvFont = Typeface.createFromAsset(assets, "OPTIMA.TTF");
tv.setTypeface(tvFont);
tv.setTextColor(Color.BLACK);
return vi;
OriginalL'auteur Stein van Broekhoven | 2013-09-19
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution 😀
OriginalL'auteur Stein van Broekhoven
L'affichage de la liste elle-même n'est pas responsable de l'élaboration des éléments, il utilise un adaptateur pour créer les éléments de la liste. Cet adaptateur crée une vue pour afficher l'élément de la liste, si nécessaire.
Pour modifier la police utilisée pour afficher l'élément de la liste, vous devez modifier la carte pour revenir à une vue de la nouvelle police. Cela peut être fait dans le L'adaptateur.getView méthode.
Si vous êtes actuellement à l'aide d'un Adaptateur de mise en œuvre, vous pouvez avoir besoin de sous-classe (ou de le remplacer complètement).
OriginalL'auteur beetstra
vous avez besoin pour créer un
custom adapter
.vérifier cette réponse
et ensuite avoir un
custom xml
trop.puis définissez la coutume adaptateur à votre
listview
.c'est l'approche la plus simple. désolé.
OriginalL'auteur Ahmed Ekri
Simplement, au lieu d'utiliser le inbuild fichier xml dans le SKD
Faire votre propre xml fichier de mise en page comme celle-ci,
et utilisez-la dans l'adaptateur.
Image De L'Échantillon:
OriginalL'auteur Aniket Rawat
Juste régler le TextView qui vous sont gonflage
définir la police de caractères dans la carte ou dans le fichier xml du layout.
TextView tv = (TextView) mView.findViewById(R. id.textview_in_listview_infliyater); final Police fontList = la Police de caractères.createFromAsset(actifs, "optima-extra-noire.ttf"); tv.setTypeface(fontList);
et @ahmed est droite, vous pouvez suivre le même code
OriginalL'auteur DropAndTrap