Страница 2 из 3

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

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

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

Добавлено: 25 ноя 2012, 18:08
rezak90
LinearLayout и RelativeLayout в 99% хватает что бы построить любое оформление для приложения. Вот с помощу них и делайте.

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

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

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

Добавлено: 25 ноя 2012, 19:35
rezak90
Просто, я думал может есть какой-то ActivityPanelScreen или ActivityGroupScreen, в который можно передать список активити, задать свойства отображения ... и крекс-пекс-фекс....
ну так такое можно написать =)

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

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

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

Добавлено: 05 янв 2013, 19:24
VitalyV
Здравствуйте!

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

Спасибо!

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

Добавлено: 05 янв 2013, 20:28
rezak90
прорисовка в адаптере идёт линейно, слева на право, так что без костылей никак... можно в адаптере в зависимости от позиции отрисовывать нужную ячейку

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

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

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

Спасибо!

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

Добавлено: 28 янв 2013, 20:18
rezak90
можно, только переопределение грида не поможет потому что ячейки отрисовывает адаптер, вот в нём и нужно реализовывать функционал, а высоту ячейки просто задаётся view.getLayoutParams.height = 100;

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

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

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

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

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

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

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

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

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

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

Добавлено: 01 фев 2013, 16:28
vital
нашел реализацию https://github.com/maurycyw/StaggeredGridViewDemo

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

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

Добавлено: 28 мар 2013, 13:28
zanmax
Делаю как написано в уроке:
Создаю файл 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)
Дальше продолжать не могу. Так как ругается на это.
В чем может быть беда?
Спасибо!

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

Добавлено: 11 апр 2013, 17:31
sae74
Добрый день.

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

Спасибо.

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

Добавлено: 11 апр 2013, 21:13
rezak90
sae74 писал(а):Добрый день.

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

Спасибо.
пишется кастомный адаптер и там задаётся логика

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

Добавлено: 17 июн 2013, 21:13
EvilAngel
Добрый день!
У меня вопрос следующего характера (так как Вы упомянули в уроке шейпинг элементов): почему при задании радиуса угла:
[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)?

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

Добавлено: 19 июн 2013, 17:30
BlindShot96
Подскажите пожалуйста, как в вашем примере, при клике по элементу GridView, выделить его?

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

Добавлено: 20 июн 2013, 15:41
EvilAngel
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 эффект.

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

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