Intereting Posts
Как я могу начать намерение с карты в Google Glass Это аннотация @TargetApi только для одного уровня Api или выше? Служба Google Play – SupportMapFragment.getMap () всегда возвращает null Создание приложения для Android, поддерживающего несколько уровней API Запуск / остановка встроенного Wi-Fi / USB-подключения от кода? Parse.com, Parse SDK скачать NO Parse-1.10.3.jar файл в SDK Как я могу преобразовать растровое изображение в формат PDF в android Нечетная ошибка logcat при переключении на новый фрагмент Как я могу отображать изображения из определенной папки в галерее Android Каким будет метод создания счетчика чисел в Android? Как сделать текстовое изображение мигающим Я не могу кэшировать изображения, поскольку я привязываю изображение с помощью MvvmCross Декодер RecyclerView добавляет дополнительные дополнения при обновлении Множество аргументов переменной длины Java Android «салфетки» против «броска»

Как окрасить определенную часть строки

У меня есть следующий CustomAdapter:

package com.test.testing; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Locale; import android.app.Activity; import android.content.Context; import android.graphics.Color; import android.graphics.Typeface; import android.text.Spannable; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; public class SetRowsCustomAdapter extends ArrayAdapter<SetRows> { Context context; int layoutResourceId; ArrayList<SetRows> data=new ArrayList<SetRows>(); DateFormat df = new SimpleDateFormat("EEEEE, LLLL d", Locale.US); String[] suspendedDates = { "Monday, January 20", "Friday, January 31", }; public SetRowsCustomAdapter(Context context, int layoutResourceId, ArrayList<SetRows> data) { super(context, layoutResourceId, data); this.layoutResourceId = layoutResourceId; this.context = context; this.data = data; } @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; ImageHolder holder = null; if(row == null) { LayoutInflater inflater = ((Activity)context).getLayoutInflater(); row = inflater.inflate(layoutResourceId, parent, false); holder = new ImageHolder(); holder.txtTitle = (TextView)row.findViewById(R.id.tvDateVal); //holder.txtTitle.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/robm.ttf")); holder.imgIcon = (ImageView)row.findViewById(R.id.ivIcon0); holder.txtDate = (TextView)row.findViewById(R.id.tvDateNum); holder.txtID = (TextView)row.findViewById(R.id.tvReasonVal); //holder.txtID.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/robm.ttf")); row.setTag(holder); } else { holder = (ImageHolder)row.getTag(); } SetRows myImage = data.get(position); int inReason = myImage.name.indexOf(","); //myImage.name is the same string as suspendedDates[]; String strR = myImage.name.substring(0, inReason); Spannable WordToSpan = new SpannableString(strR); WordToSpan.setSpan(new ForegroundColorSpan(Color.parseColor("#4787ED")), 0, WordToSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); String strRNext = myImage.name.substring(inReason, myImage.name.length()); Spannable WordToSpan1 = new SpannableString(strRNext); WordToSpan1.setSpan(new ForegroundColorSpan(R.color.dateholiday), 0, WordToSpan1.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); String strConcat = WordToSpan.toString() + WordToSpan1.toString(); holder.txtTitle.setText(strConcat);//myImage.name); holder.txtID.setText(myImage.id); holder.txtDate.setText(myImage.date); int outImage=myImage.image; /*if (myImage.name.contains(df.format(Calendar.getInstance(Locale.US).getTime()))) { holder.imgIcon.setImageResource(R.drawable.caliconpressed); } else { holder.imgIcon.setImageResource(R.drawable.calicon); }*/ return row; } static class ImageHolder { ImageView imgIcon; TextView txtTitle; TextView txtID; TextView txtDate; } } 

Я использую Spannable для установки отдельного цвета строки. Предполагается, что он произведет что-то вроде этого: Введите описание изображения здесь

Но он все еще показывает это:

Введите описание изображения здесь

Кто-нибудь знает, как отредактировать Адаптер, чтобы добиться того, что я ищу?

Не конвертируйте Spannable в строку. ( WordToSpan.toString() Не выполнять: WordToSpan.toString() )

Вместо этого установите Spannable прямо в ваш держатель, например:

 holder.txtTitle.setText(WordToSpan + WordToSpan1); 

Используйте spannable строку следующим образом:

 SpannableString ss = new SpannableString("hey #abc how are you."); ss.setSpan(new ForegroundColorSpan(Color.RED), 4, 9, 0); //Now just add the SpannableString to your textview textView.setText(ss); 

Надеюсь это поможет.

С уважением!