From 790dba617416d38062adf8445c1d2f233d840348 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 26 Mar 2022 08:21:29 +0100 Subject: [PATCH] Improved account selector --- .../email/FragmentDialogSelectAccount.java | 27 +++++------------ app/src/main/res/layout/spinner_account.xml | 29 +++++++++++++++++++ 2 files changed, 37 insertions(+), 19 deletions(-) create mode 100644 app/src/main/res/layout/spinner_account.xml diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogSelectAccount.java b/app/src/main/java/eu/faircode/email/FragmentDialogSelectAccount.java index 13c169befc..941ad91010 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogSelectAccount.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogSelectAccount.java @@ -25,11 +25,7 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.text.SpannableStringBuilder; -import android.text.style.ImageSpan; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; @@ -48,31 +44,24 @@ public class FragmentDialogSelectAccount extends FragmentDialogBase { final Context context = getContext(); final int dp6 = Helper.dp2pixels(context, 6); - final int iconSize = context.getResources().getDimensionPixelSize(R.dimen.menu_item_icon_size); + final int dp12 = Helper.dp2pixels(context, 12); - final ArrayAdapter adapter = new ArrayAdapter(context, R.layout.spinner_item1, android.R.id.text1) { + final ArrayAdapter adapter = new ArrayAdapter(context, R.layout.spinner_account, android.R.id.text1) { @NonNull @Override public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { View view = super.getView(position, convertView, parent); - - if (getCount() > 10) - view.setPadding(dp6, dp6, dp6, dp6); - - TextView tv = view.findViewById(android.R.id.text1); - EntityAccount account = (EntityAccount) getItem(position); - SpannableStringBuilder ssb = new SpannableStringBuilderEx(account.name); - Drawable d = new ColorDrawable(account.color == null ? Color.TRANSPARENT : account.color); - d.setBounds(0, 0, iconSize / 4, iconSize); + View vwColor = view.findViewById(R.id.vwColor); + TextView tv = view.findViewById(android.R.id.text1); - ImageSpan imageSpan = new CenteredImageSpan(d); - ssb.insert(0, "\uFFFC\u2002"); // object replacement character, en space - ssb.setSpan(imageSpan, 0, 1, 0); + int vpad = (getCount() > 10 ? dp6 : dp12); + tv.setPadding(0, vpad, 0, vpad); - tv.setText(ssb); + vwColor.setBackgroundColor(account.color == null ? Color.TRANSPARENT : account.color); + tv.setText(account.name); return view; } diff --git a/app/src/main/res/layout/spinner_account.xml b/app/src/main/res/layout/spinner_account.xml new file mode 100644 index 0000000000..b5592dc2fe --- /dev/null +++ b/app/src/main/res/layout/spinner_account.xml @@ -0,0 +1,29 @@ + + + + + + +