Урок 57. GridView и его атрибуты

Обсуждение уроков
nubodroid
Сообщения: 28
Зарегистрирован: 19 ноя 2012, 08:20

Re: Урок 57. GridView и его атрибуты

Сообщение nubodroid » 25 ноя 2012, 16:47

AndreyI писал(а):Что мне вам посоветовать? Изучайте Андроид последовательно, выполните хотябы несколько первых уроков и вы сами все поймете.
так я уже в уроке по GridView... Как сделать с помощью кнопочек и т.п.... я знаю.. я НЕ знаю как такие экраны профессионалы "строят". Просто, не покидает меня чувство что GridView - енто костыли для такой задачи

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 57. GridView и его атрибуты

Сообщение rezak90 » 25 ноя 2012, 18:08

LinearLayout и RelativeLayout в 99% хватает что бы построить любое оформление для приложения. Вот с помощу них и делайте.
R.id.team
Политика на форуме запрещена

nubodroid
Сообщения: 28
Зарегистрирован: 19 ноя 2012, 08:20

Re: Урок 57. GridView и его атрибуты

Сообщение nubodroid » 25 ноя 2012, 18:14

rezak90 писал(а):LinearLayout и RelativeLayout в 99% хватает что бы построить любое оформление для приложения. Вот с помощу них и делайте.
Спасибо!
Просто, я думал может есть какой-то ActivityPanelScreen или ActivityGroupScreen, в который можно передать список активити, задать свойства отображения ... и крекс-пекс-фекс.... главное не забыть полить из лужи с дождевой водой ;)

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 57. GridView и его атрибуты

Сообщение rezak90 » 25 ноя 2012, 19:35

Просто, я думал может есть какой-то ActivityPanelScreen или ActivityGroupScreen, в который можно передать список активити, задать свойства отображения ... и крекс-пекс-фекс....
ну так такое можно написать =)
R.id.team
Политика на форуме запрещена

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 57. GridView и его атрибуты

Сообщение AndreyI » 25 ноя 2012, 20:27

nubodroid писал(а):
так я уже в уроке по GridView... Как сделать с помощью кнопочек и т.п.... я знаю.. я НЕ знаю как такие экраны профессионалы "строят". Просто, не покидает меня чувство что GridView - енто костыли для такой задачи
Можно реализовать и через GridView , но это не является стандартом у профессионалов. Все зависит от задачи и дизайна проекта. Если у вас просто набор кнопок, то врядли это будет удобно, хотя и возможно. А если у вас к примеру куча картинок и при клике на картинку должно совершаться действие или запуск активити, то вполне возможно, что реализация через GridView будет удобнее и элегантнее.

VitalyV
Сообщения: 4
Зарегистрирован: 05 янв 2013, 19:15

Re: Урок 57. GridView и его атрибуты

Сообщение VitalyV » 05 янв 2013, 19:24

Здравствуйте!

А можно как то зафиксировать верхнюю строку (типа заголовок) и левую колонку?

Спасибо!

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 57. GridView и его атрибуты

Сообщение rezak90 » 05 янв 2013, 20:28

прорисовка в адаптере идёт линейно, слева на право, так что без костылей никак... можно в адаптере в зависимости от позиции отрисовывать нужную ячейку
R.id.team
Политика на форуме запрещена

vital
Сообщения: 5
Зарегистрирован: 27 дек 2012, 18:11

Re: Урок 57. GridView и его атрибуты

Сообщение vital » 28 янв 2013, 16:10

Здравствуйте! подскажите, реально ли переопределить класс GridView, чтобы добиться такого(например) построения сетки:
Изображение

Суть - ремдомная высота ячейки, ширина - по экрану.

Спасибо!

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 57. GridView и его атрибуты

Сообщение rezak90 » 28 янв 2013, 20:18

можно, только переопределение грида не поможет потому что ячейки отрисовывает адаптер, вот в нём и нужно реализовывать функционал, а высоту ячейки просто задаётся view.getLayoutParams.height = 100;
R.id.team
Политика на форуме запрещена

vital
Сообщения: 5
Зарегистрирован: 27 дек 2012, 18:11

Re: Урок 57. GridView и его атрибуты

Сообщение vital » 29 янв 2013, 11:44

rezak90 писал(а):можно, только переопределение грида не поможет потому что ячейки отрисовывает адаптер, вот в нём и нужно реализовывать функционал, а высоту ячейки просто задаётся view.getLayoutParams.height = 100;
смотрел исходники грида, то думаю придется переопределять метод onMeasure(). могу ошибаться.

там алгоритм построения не гибкий.

http://stackoverflow.com/questions/1069 ... n-gridview

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 57. GridView и его атрибуты

Сообщение rezak90 » 29 янв 2013, 17:31

дело в том что если вы растяните (по вашему скрину выше) вторую ячейку, первая будет другого размера, но третья уже будет строится не за первой а на уровне второй, то есть между третьей и первой будет просвет, так как адаптер строит линейно, слева на право и gridview позиционирует по строкам а не столбцам. Думаю что переопределение onMeasure ничего не даст, проще написать свой контрол похожий на gridview
R.id.team
Политика на форуме запрещена

vital
Сообщения: 5
Зарегистрирован: 27 дек 2012, 18:11

Re: Урок 57. GridView и его атрибуты

Сообщение vital » 29 янв 2013, 17:53

rezak90 писал(а):дело в том что если вы растяните (по вашему скрину выше) вторую ячейку, первая будет другого размера, но третья уже будет строится не за первой а на уровне второй, то есть между третьей и первой будет просвет, так как адаптер строит линейно, слева на право и gridview позиционирует по строкам а не столбцам. Думаю что переопределение onMeasure ничего не даст, проще написать свой контрол похожий на gridview
да, именно так. вот в чем трабл.
наверное придется создавать свой кастомный грид вью.
Спасибо за ответы!)

ЗЫ: другими словами мне надо враппер, аналогов не нашел. разве что https://github.com/ApmeM/android-flowlayout , но это не то. т.к. мне надо через адаптер лениво передавать вьюхи.

vital
Сообщения: 5
Зарегистрирован: 27 дек 2012, 18:11

Re: Урок 57. GridView и его атрибуты

Сообщение vital » 01 фев 2013, 16:28

нашел реализацию https://github.com/maurycyw/StaggeredGridViewDemo

http://www.androidviews.net/ - всякие реализованные вкусняшки. даже от самих гугловцев :)

zanmax
Сообщения: 1
Зарегистрирован: 30 сен 2012, 15:33

Re: Урок 57. GridView и его атрибуты

Сообщение zanmax » 28 мар 2013, 13:28

Делаю как написано в уроке:
Создаю файл rect.xml

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#99000099"></solid>
</shape>
А мне сразу выдает:

Код: Выделить всё

"<shape>" does not set the required layout_width attribute:
 (1) Set to "wrap_content"
 (2) Set to "match_parent"
"<shape>" does not set the required layout_height attribute:
 (1) Set to "wrap_content"
 (2) Set to "match_parent"
"<solid>" does not set the required layout_width attribute:
 (1) Set to "wrap_content"
 (2) Set to "match_parent"
"<solid>" does not set the required layout_height attribute:
 (1) Set to "wrap_content"
 (2) Set to "match_parent"
Exception raised during rendering: com.android.layoutlib.bridge.MockView cannot be cast to android.view.ViewGroup
You must supply a layout_width attribute.
You must supply a layout_height attribute.
Exception details are logged in Window > Show View > Error Log
The following classes could not be found:
- shape (Fix Build Path, Edit XML)
- solid (Fix Build Path, Edit XML)
Дальше продолжать не могу. Так как ругается на это.
В чем может быть беда?
Спасибо!

sae74
Сообщения: 31
Зарегистрирован: 28 фев 2013, 15:14

Re: Урок 57. GridView и его атрибуты

Сообщение sae74 » 11 апр 2013, 17:31

Добрый день.

Можно ли в GridView раскрасить строки или текст согласно определенного условия.
Например все строки белого цвета, а определенного зеленые и (или) красного.

Спасибо.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 57. GridView и его атрибуты

Сообщение rezak90 » 11 апр 2013, 21:13

sae74 писал(а):Добрый день.

Можно ли в GridView раскрасить строки или текст согласно определенного условия.
Например все строки белого цвета, а определенного зеленые и (или) красного.

Спасибо.
пишется кастомный адаптер и там задаётся логика
R.id.team
Политика на форуме запрещена

EvilAngel
Сообщения: 28
Зарегистрирован: 16 апр 2013, 23:55

Re: Урок 57. GridView и его атрибуты

Сообщение EvilAngel » 17 июн 2013, 21:13

Добрый день!
У меня вопрос следующего характера (так как Вы упомянули в уроке шейпинг элементов): почему при задании радиуса угла:
[syntax=xml]
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<gradient
android:angle="45"
android:endColor="#80FF00FF"
android:startColor="#FFFF0000" />

<corners
android:radius="1000dp" />

<padding
android:bottom="7dp"
android:left="7dp"
android:right="7dp"
android:top="10dp" />

<corners android:radius="8dp" />

</shape>
[/syntax]
чтоб я в этом атрибуте не прописывал, округлость прямоугольной фигуры достигает какого-то порогового значения и далее хоть 100dp, хоть 1000dp пиши - всё без изменений, хотя предполагал увидеть овалоподобный шейп (например на TextView)?

BlindShot96
Сообщения: 1
Зарегистрирован: 19 июн 2013, 17:27

Re: Урок 57. GridView и его атрибуты

Сообщение BlindShot96 » 19 июн 2013, 17:30

Подскажите пожалуйста, как в вашем примере, при клике по элементу GridView, выделить его?

EvilAngel
Сообщения: 28
Зарегистрирован: 16 апр 2013, 23:55

Re: Урок 57. GridView и его атрибуты

Сообщение EvilAngel » 20 июн 2013, 15:41

BlindShot96 писал(а):Подскажите пожалуйста, как в вашем примере, при клике по элементу GridView, выделить его?
Если немного переиграть пример решения поставленной задачи, данный в источнике Android gridview keep item selected, то, в принципе, я думаю это то, что Вам нужно.

Переигровка же в следующем (чтобы не дублить весь код из ссылки выше, даю изменяемые куски):
1.
[syntax=java5]
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
...
gvMain.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) {

if (myObjects.get(position).getState() == 1) {
myObjects.get(position).setState(0);
}
else{
myObjects.get(position).setState(1);
}
myAdapter.notifyDataSetChanged();
}
});

}
[/syntax]

2.
[syntax=java5]
private class MyCustomAdapter extends BaseAdapter {
...
@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
if (object.getState() == 1) {
convertView.setBackgroundColor(Color.GREEN);
} else {
convertView.setBackgroundColor(0x99000099 /*Color.BLUE*/);
//convertView.setBackgroundDrawable(convertView.getResources().getDrawable(R.drawable.rect));
}
return convertView;
}
...
}
[/syntax]

Хотя тут бы ещё убрать стандартный селектор элементов GridView для полной красоты (или хотя бы цвет выделенного элемента взять как этот стандартный).

Разумеется для всего лишь такой цели можно было бы обойтись и без кастомизации адаптера, лишь меняя бэкграунд кликнутого элемента в обработчике onItemClick(...)
[syntax=java5]
((GridView)parent).getAdapter().getView(position, view, parent).setBackgroundColor(<цветовая схема>);
[/syntax]
но тогда надо позаботиться о схроне состояний этих элементов, чтобы корректен был checked/unchecked эффект.

Аватара пользователя
kifir
Сообщения: 11
Зарегистрирован: 06 окт 2013, 19:03

Re: Урок 57. GridView и его атрибуты

Сообщение kifir » 03 дек 2013, 16:03

Здравствуйте! А можно ли задать фиксированную ширину для первой ячейки одну, а для остальных другую?

Ответить