С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 3

Разноцветный список цветов без текста

12.07.2013, 10:52. Показов 1523. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Необходимо создать список цветов с помощью массива нужных расцветок.
Т.е. что-то вроде цветовой палитры. (Можно конечно вставить просто большую картику в Activity.)

Но хотелось бы сделать именно программным путём список (ListView)
у которого каждый элемент будет иметь свой цвет фона.

1. Возможно ли такое? Если да, то как?
2. Какой тип массива нужен и где создать сам массив: в colors.xml, strings.xml или же в arrays.xml?
3. Нужно ли создавать свой адаптор или лучше использовать из тех, что уже существуют?

(Примеров списков строковых ресурсов очень много, но мне нужно только фоны менять каждого элемента в списке.)

Надеюсь, что постановка вопроса ясна. Буду очень благодарна, если хоть кто-нибудь направит в нужное русло.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.07.2013, 10:52
Ответы с готовыми решениями:

Есть н цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов. Количество цветов и их названия вводит пользователь
Есть n цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов. Количество цветов и их названия вводит...

Фиксированный список цветов в ColorComboBox
Доброго времени суток! Подскажите, пожалуйста! Возможно ли изменить стандартный список цветов у ColorComboBox ? Мне необходимо, чтобы в...

Вывести текстом список цветов?
Уважаемые пользователи этого форума,подскажите пожалуйста как мне вывести рядом с таблицей БД http://dizarius.com/arta/word5.php текстом...

3
ComfyMobile
 Аватар для DedBoroda
89 / 89 / 8
Регистрация: 04.11.2010
Сообщений: 376
12.07.2013, 11:30
Цитата Сообщение от Nika_DE Посмотреть сообщение
1. Возможно ли такое? Если да, то как?
Возможно, очень даже не сложно. Начните, я Вам помогу. Что у Вас уже есть?
Цитата Сообщение от Nika_DE Посмотреть сообщение
2. Какой тип массива нужен и где создать сам массив: в colors.xml, strings.xml или же в arrays.xml?
Нужно будет использовать List<Color>, например.
Цитата Сообщение от Nika_DE Посмотреть сообщение
3. Нужно ли создавать свой адаптор или лучше использовать из тех, что уже существуют?
У Вас нетривиальная задача, придется делать свой адаптер, где будет меняться цвет фона соответствующего элемента меню.
1
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 3
13.07.2013, 11:13  [ТС]
Показалось, что уже никто не ответит и поэтому было решено сделать массив с картинками определённых цветов.
Есть хороший пример для такого случая, здесь:

http://www.mobilab.ru/androidd... tview.html

Вот что было начато:

1. Создан xml файл "farbpalette_layout.xml":

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    android:orientation="vertical" >
 
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
 
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/listtext"
        android:src="@drawable/f_gray" />
 
</LinearLayout>

Затем класс для хранения информации "ListItem.java". Он довольно маленький. Может, нужно было его вставить в класс адаптора, как внутренний класс?

Java
1
2
3
4
5
6
7
8
public class ListItem {
 
    int image;
 
    public ListItem(int _image) {
        image = _image;
    }
}
Теперь сам класс адаптора "FarbenAdapter.java":

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class FarbenAdapter extends BaseAdapter {
 
    private final Context context;
    LayoutInflater l_inflater;
    ArrayList<ListItem> items;
 
    public FarbenAdapter(Context context, ArrayList<ListItem> items) {
 
        this.context = context;
        this.items = items;
        l_inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
 
    @Override
    public int getCount() {
        return items.size();
    }
 
    @Override
    public ListItem getItem(int position) {
        return items.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            view = LayoutInflater.from(context).inflate(
                    R.layout.farbpalette_layout, null);
        }
        ListItem item = (getItem(position));
        ((ImageView) view.findViewById(R.id.imageView1))
                .setImageResource(item.image);
 
        return view;
    }
}
И последнее - использование всех этих заготовок в классе Activity "FarbenActivity.java":


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class FarbenActivity extends ListActivity {
 
    private ArrayList<ListItem> farben;
 
    // Массив с картинками разного цвета
    int[] img = { R.drawable.f_darkgray, R.drawable.f_black,
            R.drawable.f_deep_pink, R.drawable.f_red, R.drawable.f_red2 };
 
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        farben = new ArrayList<ListItem>();
        for (int i = 1; i <= 5; i++) {
            farben.add(new ListItem(img[i - 1]));
        }
        FarbenAdapter fabAdapter;
        fabAdapter = new FarbenAdapter(this, farben);
        setListAdapter(fabAdapter);
    }
 
    public void onListItemClick(ListView parent, int position) {
        Toast.makeText(this, "Farbenname", Toast.LENGTH_SHORT).show();
        // При щелчке на элемент списка будет всплывать название данного цвета
    }
 
    public boolean onOprionsItemSelected(MenuItem item) {
        super.onOptionsItemSelected(item);
        startActivity(item.getIntent());
        return true;
    }
}
Добавлено через 10 минут
Использование большого количества картинок, каждая из которых изображает один цвет - довольно неуклюжее решение.
Во-первых, будет занято слишком много памяти и, во-вторых, программным путём куда интереснее добиться решения, чем сидеть и делать такие скучные изображения.

Так здорово будет, если вы мне поможете, я хоть продвинусь в своих знаниях ещё чуть-чуть.

Добавлено через 17 часов 29 минут
DedBoroda, вы можете мне объяснить, что может быть в описании класса Color? Какой тип взять для обозначения цвета?
Значит, мне лучше всё заново написать или можно немного изменить адаптор? Можете помочь? Я не очень понимаю как написать адаптор для такого случая.
0
0 / 0 / 0
Регистрация: 10.06.2013
Сообщений: 3
13.07.2013, 23:09  [ТС]
DedBoroda, благодарю Вас, за помощь.

Делусь с решением задачи. Возможно, что у кого-нибудь могут тоже появиться похожие вопросы.

Итак:

1. Создаётся два xml-файла, один для элемента в списке, а другой - для всего списка.

"item.xml" - тут главным можно считать id y TextView:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
 
    <TextView
        android:id="@+id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="left|center_vertical"
        android:layout_margin="5dp"
        android:gravity="center_horizontal"
        android:text="@string/leer_text" />
 
</LinearLayout>
"farbpalette_layout.xml" в котором стоят ListView и TextView

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    android:orientation="vertical" >
 
    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="332dp" >
    </ListView>
 
    <TextView      
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/leer_text" />
 
</LinearLayout>
2. Создаётся класс для Activity, например, "FarbenActivity.java"

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class FarbenActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        // Находим Layout, в котором будет стоять сесь список
        setContentView(R.layout.farbpalette_layout);
 
        // Создаём список цветов
        ArrayList<Integer> colors1 = new ArrayList<Integer>();
        colors1.add(getResources().getColor(R.color.butter_yellow));
        colors1.add(getResources().getColor(R.color.gray));
        colors1.add(getResources().getColor(R.color.royal_blue));
        // и другие цвета..
 
        // Создаём адаптор, который принимает наш ArrayList
        FarbenAdapter adapter = new FarbenAdapter(this, colors1);
 
        // ListView в который вписываем с помощью адаптора наш ArrayList
        ListView listView = (ListView) findViewById(R.id.listView);
        listView.setAdapter(adapter);
    }}
3. Создаётся адаптор, например, "FarbenAdapter.java":

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class FarbenAdapter extends BaseAdapter {
 
    private final Context context;  
    ArrayList<Integer> colorsarray = new ArrayList<Integer>();
 
    public FarbenAdapter(Context context, ArrayList<Integer> colors) {
        this.context = context;
        colorsarray = colors;
    }
    
    @Override
    public int getCount() {
        
        return colorsarray.size();
    }
 
    @Override
    public Object getItem(int position) {
        return colorsarray.get(position);
    }
 
    @Override
    public long getItemId(int position) {
        return position;
    }
 
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // получим layout item, чтобы с ним дальше работать
        View view = View.inflate(context, R.layout.item, null);
        
        // дальше с него получим TextView
        TextView colorText = (TextView) view.findViewById(R.id.text);
        
        //дальше зададим этому TextView текст - это код цвета
        //position у нас аргумент, показывающий позицию в листе..
        colorText.setText(String.valueOf(getItem(position)));
        
        // .. и задаем фон
        colorText.setBackgroundColor((Integer)getItem(position));
        
        return view;
    }
}
Таким образом, получаем разноцветный список.
Успехов всем!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.07.2013, 23:09
Помогаю со студенческими работами здесь

Определить список из 10 названий цветов
Определить список из 10 названии цветов.Построить 5 множеств из различных элементов списка.Вывести на экран название объектов которые...

Создать список цветов в ComboBox
Вообщем создать то я создаю, но не могу сделать так что бы в начале каждой строчке был квадратик раскрашенный в этот цвет. Подскажите...

генерирование цветов без повторений
Привет! Код не хочет генерировать цвета без повторений, подскажите в чем тут дело) function randomDiap(n,m) { return...

программа которая берет список и создает список другой из этого же списка + тот же список без последнего элемента
надо написать программу которая берет список и создает список другой из этого же списка + тот же список без последнего элемента к...

Как создать свой список цветов?
Как создать свой список цветов чтобы он был виден в дизайнере при разработке приложения? Т. е. чтобы определенные свойства можно было...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru