Je suis aux prises avec ce terrible bug. Il semble que tout fonctionne à la place celui-ci android:state_activated
. J'essayais de mettre <item>
dans un ordre différent, mais cela n'aide pas. De plus, lorsque l'application démarre l'option fragment choisi par défaut dans le tiroir est pas trop coloré (comme dans la version par défaut) ...Le sélecteur de tiroir Android state_activated ne fonctionne pas et ne colorie pas defeault article sélectionné
Ceci est mon selector
:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPirmaryDarkerGray"
android:state_activated="true"/>
<item android:drawable="@color/colorPirmaryDarkerGray"
android:state_pressed="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
Ceci est la mise en page pour un article:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:id="@+id/itemIcon"/>
<TextView
android:id="@android:id/text1"
android:duplicateParentState="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="32sp"
/>
</LinearLayout>
Ceci est la disposition du tiroir:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
android:paddingTop="10dp"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#cccc"
android:drawSelectorOnTop="false"
android:listSelector="@drawable/my_drawer_selector"
tools:context="com.myPackage.app.NavigationDrawerFragment"/>
Th est est en onCreateView
(j'ai ajouté ici mon adaptateur seulement, le reste est par défaut)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mDrawerListView = (ListView) inflater.inflate(
R.layout.drawer_dashboard, container, false);
mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectItem(position);
}
});
String[] items = {
getString(R.string.Contacts),
getString(R.string.Data)
};
Integer[] images = {
R.drawable.ic_contacts,
R.drawable.ic_data
};
mDrawerListView.setAdapter(new MyCustomDrawerListAdapter(getActivity(), items, images));
//This should indicate the first coloring but it doesn't
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
return mDrawerListView;
}
Et à la fin, mon MyCustomDrawerListAdapter
:
private class MyCustomDrawerListAdapter extends ArrayAdapter<String>{
private final Activity context;
private final String[] itemname;
private final Integer[] imgid;
public MyCustomDrawerListAdapter(Activity context, String[] itemname, Integer[] imgid){
super(context, R.layout.my_menu_drawer_item, itemname);
this.context = context;
this.itemname = itemname;
this.imgid = imgid;
for (Integer anImgid : imgid) {
System.out.println(" image id " + anImgid);
}
}
public View getView(int position,View view,ViewGroup parent) {
if (view == null) {
view = getActivity().getLayoutInflater().inflate(R.layout.my_menu_drawer_item, null, false);
}
((TextView) view.findViewById(android.R.id.text1))
.setText(getItem(position));
((ImageView) view.findViewById(R.id.itemIcon))
.setImageResource(imgid[position]);
return view;
}
}
Quelle version ciblez-vous et sur quelle version testez-vous? – Juan
Ciblage 25, test sur 21 – soommy12