Можно ли создать GridVIew из LinearLayouts? - PullRequest
4 голосов
/ 12 марта 2012

мне нужно иметь вид сетки линейных разметок.Каждый linearLayout должен иметь представление изображений и относительные дочерние элементы с несколькими дочерними элементами.

Я ищу учебники / примеры создания сеточных представлений LinearLayouts, но ничего не могу найти.

Кто-тоУ вас есть учебное пособие или можете дать мне несколько примеров или помочь сделать это?

спасибо

1 Ответ

9 голосов
/ 12 марта 2012

Да, это возможно и действительно очень просто. Когда вы используете свой GridView, предоставьте ему адаптер. В методе getview адаптера вы можете создать любое представление и вернуть его. Например, вы можете раздуть представление из XML - и этот xml может содержать LinearLayout. Кроме того, вы можете создать линейный макет на лету в этом методе и добавить к нему другие компоненты.

Посмотрите эту статью в Google: http://developer.android.com/resources/tutorials/views/hello-gridview.html

Обновление: маленький пример

В вашем res/layout/item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:paddingTop="0dip"
     android:paddingBottom="0dip"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal">

    <TextView android:id="@+id/TxtName"
         android:scrollHorizontally="false"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:textColor="@android:color/black"
         android:layout_weight="0.2"
         android:padding="2dp"/>

     <TextView android:id="@+id/TxtPackage"
         android:scrollHorizontally="false"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_weight="0.2"
         android:textColor="@android:color/black"
         android:padding="2dp"/>
</LinearLayout>

Тогда в вашем адаптере:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //get the item corresponding to your position

    LinearLayout row = (LinearLayout) (convertView == null
               ? LayoutInflater.from(context).inflate(R.layout.item, parent, false)
               : convertView);
    ((TextView)row.findViewById(R.id.TxtName)).setText("first text");
    ((TextView)row.findViewById(R.id.TxtPackage)).setText("second text");
    return row;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...