Ajouter des Icônes pour Android Navigation Tiroir?
J'ai écumé le web pour répondre à cette question, mais n'arrive pas à en trouver un, même dans l'Android officielle de la documentation.
Je suis dans le processus de création d'une application qui implémente Android Navigation Tiroir de mise en page. La Documentation de cette mise en forme peut être trouvé ici et ici.
Dans la conception de la documentation ainsi que dans un certain nombre d'applications populaires tels que Facebook et Google Courants, le tiroir éléments ont icônes en face d'eux.
La documentation relative à la conception elle-même mentionne, sous la rubrique "Contenu de la Navigation Tiroir"
De Navigation cibles peuvent avoir en option conduisant icônes ainsi que la fuite des compteurs. Utiliser les compteurs à informer les utilisateurs sur un état modifié de données dans la vue correspondante.
Malheureusement, la documentation du Développeur ne fait aucune mention de la façon de mettre en œuvre des icônes dans cette configuration. Il décrit comment mettre en œuvre la liste des éléments de la manière suivante:
public class MainActivity extends Activity {
private String[] mPlanetTitles;
private ListView mDrawerList;
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPlanetTitles = getResources().getStringArray(R.array.planets_array);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
//Set the adapter for the list view
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, mPlanetTitles));
//Set the list's click listener
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
...
}
}
Parce que leur mise en œuvre utilise getStringArray(), il n'y a aucun moyen que je peux penser à modifier la ligne de l'élément xml à une icône.
Ça, c'est incompréhensible, parce que de nombreuses applications semblent mettre en œuvre des icônes avant de chaque élément de texte très bien, et la documentation sur la Conception même fait référence à l'ajout d'icônes. Je pense que il doit y avoir une API simple appel pour effectuer l'ajout de ces icônes, et pourtant la seule application que j'ai trouvé jusqu'à présent, semble ridiculement compliqué.
Personne ne sait comment ajouter des icônes à la Navigation Tiroir éléments? Est-il un moyen de le faire avec un simple appel de l'API, ou avoir toutes ces entreprises (Facebook, Google, etc) ont dû trouver des moyens de pirater de contourner le problème?
Merci à tous.
- Avez-vous jamais obtenir cette triés? Si oui, l'esprit de partage?
Vous devez vous connecter pour publier un commentaire.
Le choix du modèle de données pour un
ListAdapter
n'a aucune incidence sur si les lignes créées par ceListAdapter
peut avoir des icônes.Mettre un
ImageView
dans votre ligne de mise en page pour leListAdapter
. De renseigner lesImageView
par l'intermédiaire de votreListAdapter
, comme en substituantgetView()
sur votreArrayAdapter
. OIE, vous le faites de la même manière que vous le faites pour n'importe quel autreListView
, comme cela a été fait pendant des années.Qui dépend de vos définitions de "simple" et "appel d'API".
Créer une Classe Adaptateur comme..
Et de créer un changement de votre MainActivity.
utilisation
place de
Le tableau de chaîne n'est pas la définition de la disposition des lignes. Votre
R.layout.drawer_list_item
représente le plan de chaque ligne de la liste. Si vous souhaitez inclure une image (ou même d'autres compliqué ligne de mise en page), vous pouvez inclure l'affichage de l'image dans la mise en page personnalisée xml remplacementR.layout.drawer_list_item
xml.Quant à la façon de régler l'image ou du texte dans chaque rangée, tout cela est fait dans le
getView()
méthode de la matrice de l'adaptateur. Un exemple grossier, c'est comme cela (en supposant qu'il existe un textview et imageview dans la ligne):Un moyen plus efficace de mettre en œuvre les points de vue pour chaque ligne à l'aide de la viewholder modèle. L'un des nombreux endroits où vous pouvez trouver des exemples est ici.
De structurer ce vraiment clairement j'ai fait quelques lignes de code supplémentaires pour objet la mise en œuvre qui génère tout à partir d'un tableau de
NavigationItem
s - une simple classe Java qui contient des champs de texte, l'icône et le fragment d'un élément de menu:Dans le MainActivity ma Navigation est simplement défini par le tableau:
La
NavigationItem
classe:Et la NavigationAdapter:
qui utilise une base xml de mise en page,
list_item_navigation
, qui contient seulement unImageView
et unTextView
.