AppCompat v22.1.*: drawable tinting

This commit is contained in:
str4d
2015-05-29 02:26:03 +00:00
parent f6dc23d012
commit c8900cc24d
3 changed files with 17 additions and 12 deletions

View File

@@ -1,8 +1,8 @@
package i2p.bote.android; package i2p.bote.android;
import android.content.Context; import android.content.Context;
import android.content.res.ColorStateList; import android.graphics.drawable.Drawable;
import android.os.Build; import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@@ -100,8 +100,12 @@ public class FolderListAdapter extends RecyclerView.Adapter<FolderListAdapter.Vi
@Override @Override
public void onBindViewHolder(final ViewHolder holder, int position) { public void onBindViewHolder(final ViewHolder holder, int position) {
final EmailFolder folder = mFolders.get(position); final EmailFolder folder = mFolders.get(position);
final boolean isSelected = position == mSelectedFolder;
Drawable folderIcon = DrawableCompat.wrap(BoteHelper.getFolderIcon(mCtx, folder));
DrawableCompat.setTintList(folderIcon, mCtx.getResources().getColorStateList(R.color.folder_icon));
holder.mIcon.setImageDrawable(folderIcon);
holder.mIcon.setImageDrawable(BoteHelper.getFolderIcon(mCtx, folder));
try { try {
holder.mName.setText(BoteHelper.getFolderDisplayNameWithNew(mCtx, folder)); holder.mName.setText(BoteHelper.getFolderDisplayNameWithNew(mCtx, folder));
} catch (PasswordException e) { } catch (PasswordException e) {
@@ -109,9 +113,9 @@ public class FolderListAdapter extends RecyclerView.Adapter<FolderListAdapter.Vi
holder.mName.setText(BoteHelper.getFolderDisplayName(mCtx, folder)); holder.mName.setText(BoteHelper.getFolderDisplayName(mCtx, folder));
} }
holder.itemView.setSelected(position == mSelectedFolder); holder.itemView.setSelected(isSelected);
holder.mName.setTextAppearance(mCtx, position == mSelectedFolder ? holder.mName.setTextAppearance(mCtx, isSelected ?
R.style.TextAppearance_AppCompat_NavDrawer_Selected : R.style.TextAppearance_AppCompat_NavDrawer_Selected :
R.style.TextAppearance_AppCompat_NavDrawer); R.style.TextAppearance_AppCompat_NavDrawer);
@@ -119,16 +123,10 @@ public class FolderListAdapter extends RecyclerView.Adapter<FolderListAdapter.Vi
@Override @Override
public void onClick(View view) { public void onClick(View view) {
int position = holder.getAdapterPosition(); int position = holder.getAdapterPosition();
boolean alreadySelected = position == mSelectedFolder;
setSelected(position); setSelected(position);
mListener.onDrawerFolderSelected(folder, alreadySelected); mListener.onDrawerFolderSelected(folder, isSelected);
} }
}); });
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
holder.mIcon.setImageTintList(position == mSelectedFolder ?
new ColorStateList(new int[][]{{}},
new int[]{mCtx.getResources().getColor(R.color.primary)}) : null);
} }
// Return the size of the dataset (invoked by the layout manager) // Return the size of the dataset (invoked by the layout manager)

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/primary" android:state_selected="true"/>
<item android:color="@color/grey_600"/>
</selector>

View File

@@ -11,6 +11,8 @@
<color name="uva_color">#c31756</color> <color name="uva_color">#c31756</color>
<color name="error_color">#f00</color> <color name="error_color">#f00</color>
<color name="grey_600">#757575</color>
<color name="green">#4caf50</color> <color name="green">#4caf50</color>
<color name="red">#f44336</color> <color name="red">#f44336</color>