У меня есть shape
в layer-list
и моей целью является изменение цвета shape
программно во время выполнения. У меня есть String для кода HEX, и я использовал Color.parseColor()
, чтобы разобрать его, и я передал метод setColor. Всякий раз, когда я запускаю приложение, он показывает другой цвет, который я ожидаю.setColor method of GradientDrawable drawing different colour
Вот мой код для файла XML:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/lvbg"
android:top="1dp">
<shape
android:id="@+id/listview_background"
android:shape="rectangle" >
<size
android:height="220dp"
android:width="600dp" >
</size>
<solid android:color="@android:color/black"></solid>
<corners android:radius="15dp" />
</shape>
</item>
</layer-list>
И это мой код в CustomAdapter
:
convertView = mInflater.inflate(R.layout.student_info_selection_fragment_icon, null);
holder = new ViewHolder();
holder.collegeBG=(LayerDrawable)convertView.getResources().getDrawable(R.drawable.rectangle);
holder.bg = (GradientDrawable)holder.collegeBG.findDrawableByLayerId(R.id.lvbg);
String color = "#FF" + rowItem.getCollegeColor();
holder.bg.setColor(Color.parseColor(color));
Например, когда я ставлю #FF1D0A63
я получаю черный или коричневый, совершенно разные цвета. Благодаря
Что выход 'rowItem.getCollegeColor()'? –
Цветовые коды в формате HEX, такие как '232323',' 1D0A63', '000000' –
Когда я печатаю' color', нет проблем, я получаю ожидаемые результаты HEX. '# FF232323'' # FF1D0A63'' # FF000000' и более. Я предполагаю, что проблема заключается в достижении элемента 'shape' в списке слоев. Я не уверен, правильно ли я добрался до формы. –