Android Gridlayout API 21 -- android поле с участием android-layout поле с участием user-interface поле с участием android-5.0-lollipop поле с участием android-gridlayout пол Связанный проблема

Android GridLayout API 21


6
vote

проблема

русский

Я пытаюсь сделать что-то вроде этого:

Введите описание изображения здесь

В настоящее время я вручную устанавливаю ширину плиток, равных половине ширины экрана. Это работает хорошо, но он делает добавления разделителей между плитками (как видно на скриншоте) тяжело. К счастью, похоже, что в API 21, Существует теперь поддержка веса в Gridlayout , цитируемый здесь для вашего удобства:

как в API 21, распределение избыточного пространства Gridlayout избыточного пространства Принцип веса. В случае, если веса не указаны, Предыдущие конвенции уважаются, а столбцы и строки взяты как гибкий, если их представления указывают некоторую форму выравнивания в их группы. Поэтому гибкость вида зависит от ее Выравнивание, которое, в свою очередь, обычно определяется путем установки гравитации Собственность параметров макета ребенка. Если вес или выравнивание были определены вдоль заданной оси, то компонент принимается как гибкий в этом направлении. Если вес или выравнивание не было установлено, Компонент вместо этого предполагается негибким.

Несколько компонентов в той же группе строки или столбца считаются действовать параллельно. Такая группа гибкая только если все Компоненты внутри него гибки. Группы строки и столбцов, которые сидят любая сторона общей границы, вместо этого считается действовать в ряд. Композитная группа из этих двух элементов, является гибкой, если Один из его элементов гибкий.

Чтобы сделать растяжку столбца, убедитесь, что все компоненты внутри него Определите вес или гравитацию. Для предотвращения растяжения столбца, Убедитесь, что один из компонентов в столбце не определяет вес или гравитация.

Когда принцип гибкости не предоставляет полное Алгоритмы Gridlayout одобряют строки и колонны, которые ближе к его правым и нижним краям. Быть более точным, Gridlayout относится к каждому из своих параметров макета как ограничение в Набор переменных, которые определяют линии сетки вдоль заданной оси. Во время макета Gridlayout решает ограничения, чтобы вернуть уникальное решение этих ограничений, для которых все переменные меньше, чем-или равно - к соответствующему значению в любом другом действительном решение.

Я собрал эту простую макет, состоящую из Gridlayout с 2 столбцами, пытаясь достичь двух одинаково широких столбцов:

 <код> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"     android:paddingRight="@dimen/activity_horizontal_margin"     android:paddingTop="@dimen/activity_vertical_margin"     android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">      <GridLayout         android:layout_width="match_parent"         android:layout_height="fill_parent"         android:layout_alignParentTop="true"         android:layout_centerHorizontal="true"         android:columnCount="2">         <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />         <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />         <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />         <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />         <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />     </GridLayout> </RelativeLayout>   

Я думал, что поскольку все дети имеют равный вес колонны, это приведет к одинаково широким столбцам. Это, кажется, не так, как правило, так как это то, что результаты:

Введите изображение изображения здесь

Первый столбец уже, чем второй столбец. Есть ли здесь что-то здесь? Я неправильно понимаю, как вес работает с gridlayout?

как другой вопрос, я не могу сделать ширину 0 с весовым трюком, чтобы обеспечить равную ширину независимо от содержания (TextView просто исчезает). Как я могу сделать это с gridlayout?

Английский оригинал

I'm trying to accomplish something like this:

enter image description here

Currently, I'm manually setting the width of the tiles equal to half the screen width. This works well, but it makes adding dividers between the tiles (as seen in the screenshot) hard. Luckily, it seems that in API 21, there is now support for weight in GridLayout, quoted here for your convenience:

As of API 21, GridLayout's distribution of excess space accomodates the principle of weight. In the event that no weights are specified, the previous conventions are respected and columns and rows are taken as flexible if their views specify some form of alignment within their groups. The flexibility of a view is therefore influenced by its alignment which is, in turn, typically defined by setting the gravity property of the child's layout parameters. If either a weight or alignment were defined along a given axis then the component is taken as flexible in that direction. If no weight or alignment was set, the component is instead assumed to be inflexible.

Multiple components in the same row or column group are considered to act in parallel. Such a group is flexible only if all of the components within it are flexible. Row and column groups that sit either side of a common boundary are instead considered to act in series. The composite group made of these two elements is flexible if one of its elements is flexible.

To make a column stretch, make sure all of the components inside it define a weight or a gravity. To prevent a column from stretching, ensure that one of the components in the column does not define a weight or a gravity.

When the principle of flexibility does not provide complete disambiguation, GridLayout's algorithms favour rows and columns that are closer to its right and bottom edges. To be more precise, GridLayout treats each of its layout parameters as a constraint in the a set of variables that define the grid-lines along a given axis. During layout, GridLayout solves the constraints so as to return the unique solution to those constraints for which all variables are less-than-or-equal-to the corresponding value in any other valid solution.

I put together this simple layout consisting of a GridLayout with 2 columns, trying to achieve two equally-wide columns:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"     android:paddingRight="@dimen/activity_horizontal_margin"     android:paddingTop="@dimen/activity_vertical_margin"     android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">      <GridLayout         android:layout_width="match_parent"         android:layout_height="fill_parent"         android:layout_alignParentTop="true"         android:layout_centerHorizontal="true"         android:columnCount="2">         <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />         <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />         <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />         <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />         <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />     </GridLayout> </RelativeLayout> 

I thought that since all the children have equal column weight, it would result in equally-wide columns. This doesn't seem to be the case however, since this is what results:

enter image description here

The first column is narrower than the second column. Is there something I'm missing here? Am I misunderstanding how weight works with GridLayout?

As another question, I can't seem to do the 0 width with weight trick to ensure equal width regardless of content (the TextView just disappears). How can I accomplish this with GridLayout?

</div
              

Список ответов

6
 
vote

Просто добавьте <код> for0 каждому ребенку Gridlayout (любой ребенок без <код> for1 сломает макет веса.)

Убедитесь, что нет дочернего вида, имеет более широкий размер ширины, чем средний размер ширины, если у вас есть младший вид с уточнением размера ширины.

Надеюсь, это поможет тебе.

 

Just add android:layout_width="0dp" to every child of the GridLayout (any child without layout_width="0dp" will break the weight layout.)

Make sure there is no child view has a bigger width size than average width size if you have child view with specify width size.

Hope it will help u.

</div
 
 
2
 
vote

Попробуйте это, я редактирую это очень скоро, хочу попробовать себя и увидеть

 <код>   <GridLayout     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:layout_centerHorizontal="true"             android:columnCount="2" >       <Button         android:layout_column="0"         android:layout_gravity="fill"         android:layout_row="0"         android:layout_columnWeight="1"         android:text="c0 | r0" />     <Button         android:layout_column="1"         android:layout_gravity="fill"         android:layout_row="0"          android:layout_columnWeight="1"         android:text="c1 | r0" />     <Button         android:layout_column="1"         android:layout_gravity="fill"         android:layout_row="3"         android:layout_columnWeight="1"         android:text="c1 | r3" />     <Button         android:layout_column="0"         android:layout_gravity="fill"         android:layout_row="1"         android:layout_columnWeight="1"         android:text="c0 | r1" />  </GridLayout>   

Текст на кнопках объясняет, как <код> gridlayout работает довольно круто, верно?

Вы указываете количество столбцов для строки, и вы помещаете свои виджеты в соответствующую позицию (номер столбца и номер строки) .. поместил позиции в тексте, чтобы отразить его ..

На самом деле никогда не потратил время с <Код> gridlayout , мне пришлось играть с Eclipse в течение 2 минут, чтобы получить его .. Так что столбец и ряд .. Вы можете играть с ними на самом деле, я только что сделал и имел Один столбец и другой столбец пусто. В моем примере.

Надеюсь, это поможет

 

try this, i will edit it very soon, want to try myself and see

  <GridLayout     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:layout_centerHorizontal="true"             android:columnCount="2" >       <Button         android:layout_column="0"         android:layout_gravity="fill"         android:layout_row="0"         android:layout_columnWeight="1"         android:text="c0 | r0" />     <Button         android:layout_column="1"         android:layout_gravity="fill"         android:layout_row="0"          android:layout_columnWeight="1"         android:text="c1 | r0" />     <Button         android:layout_column="1"         android:layout_gravity="fill"         android:layout_row="3"         android:layout_columnWeight="1"         android:text="c1 | r3" />     <Button         android:layout_column="0"         android:layout_gravity="fill"         android:layout_row="1"         android:layout_columnWeight="1"         android:text="c0 | r1" />  </GridLayout> 

the text on the buttons explains how gridlayout works pretty cool right?

You specify the number of columns for a row and you place your widgets in their respective position (Column Number and Row Number).. placed the positions in the text to reflect it..

actually never took the time with gridlayout, i had to play with eclipse for 2 minutes to get it.. so column and row.. you can play with them actually, i just did and had one column and the other column empty.its in my example.

hope it helps

</div
 
 
   
   

Связанный проблема

0  ONITEMSELUCTERLISTENER не выходит, когда я выбираю то же предыдущее значение  ( Onitemselectedlistener is not fired when i select the same previous value ) 
Когда я снова выбираю то же значение, которое в адаптере значения не обновляются и даже OnitEmseLectedListener или NothingsElected не выдержаны Вот следует ...

2  Распознавание речи Android не подключено к службе распознавания  ( Android speech recognizer not connected to the recognition service ) 
Я хочу ввести функцию постоянного распознавания голоса в моем приложении Android. Я осознаю тот факт, что распознавание голоса время от времени зависает от ...

0  Bitmap.createbitmap имеет все пиксели на 0  ( Bitmap createbitmap has all pixels set to 0 ) 
Я пытаюсь создать растровое изображение из AN INT Array, но полученное растровое изображение все 0. <Сильный> Сценарий У меня есть приложение, которое прин...

0  Android-студия «Приложения имеют одинаковое имя пакета»  ( Android studio applications have the same package name ) 
Мое приложение в Android Studio имеет отдельные компоненты для мобильных устройств и для очков Google. Когда я пытаюсь загрузить мобильную версию на Nexus 10 ...

1  Android - Interstitialad - ресурсы сервисов Google Play не были найдены  ( Android interstitialad the google play services resources were not found ) 
Я пытаюсь добавить межстициализацию в мой проект. Я добавил необходимую библиотеку Скачать сервис Google от Manager SDK Импортировка проекта в качеств...

1  Первое приложение для Android после Eclipse Установить  ( First app for android after eclipse install ) 
Я искал вокруг и не могу найти точную ситуацию или ответить, что мне нужно, поэтому мне придется задать вопрос, что я уверен, что где-то просил там, поэтому м...

2  Как поставить один за один звонок на удержание? [закрыто]  ( How to put one by one call on hold ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> <Путь d = "M15 6.38A6.48 6.48 0 007.78. 04H-.02A6.49 6.49 0 002.05 ...

-1  Как изменить странные и даже пункты меню переполнения меню  ( How to change odd and even overflow menu items background ) 
Как изменить странные и даже переполнить пункты меню фон в Android? ...

9  Phone Gam [Ошибка] CMD: Команда не удалась с помощью выхода кода Enoent  ( Phone gap error cmd command failed with exit code enoent ) 
Я пытаюсь получить разрыв на телефоне работать на Android, и моя команда выводит следующее: <код> phonegap build android [phonegap] detecting Android SDK en...

0  Android использует RecyClerview с локальной библиотекой RecyClerview вместо загрузки его из Maven Repo  ( Android use recyclerview with local recyclerview library instead of loading it f ) 
Я пытаюсь использовать RecyClerview в моем проекте, но потому что у нас есть несколько плохих прокси, я не могу позволить себе добавить компиляцию <код> "com....

6  Как использовать OnDateChangedListener, OnDatesetListener без использования DatePickerDialog?  ( How to use ondatechangedlistener ondatesetlistener without using datepickerdial ) 
Я хочу иметь возможность обнаруживать изменения в DatePicker, как только пользователь начинает менять его. Однако я не хочу использовать datrpickerdialog. Кто...

4  Как получить местное видео URI для Exoplayer 2.x  ( How to get local video uri for exoplayer 2 x ) 
У меня есть видеофайл Dog.mp4 в res/raw папка, который я хочу играть с экзоплом. Я пытаюсь выяснить, как получить видео URI для этой строки кода из Руководс...

0  Разбирайте следующий XML с помощью модернизации SimplexML-конвертера с классом POJO  ( Parse the following xml using retrofit simplexml converter with a pojo class ) 
Это моя структура XML <код> <downloads> <item>98cfa929ee93149e245aabf5e4377058</item> <item>498b513aa646d6ef1c407cbeabf6bd20</item> <item>13815d2c0dd53a251b...

1  Проблема с использованием TextureView с NDK  ( Issue using textureview with ndk ) 
Я работаю над небольшим кусочком кода, используя текстуру, чтобы отобразить результат среды MediaPlayer. Я сталкиваюсь с проблемой, пытающимся смешивать упр...

25  Почему приложение умирает случайным образом?  ( Why application is dying randomly ) 
Я разрабатываю приложение для музыкального проигрывателя. Все работает нормально, за исключением внезапно умирает приложение. Иногда это происходит, когда при...

Связанный проблема

0  ONITEMSELUCTERLISTENER не выходит, когда я выбираю то же предыдущее значение 
2  Распознавание речи Android не подключено к службе распознавания 
0  Bitmap.createbitmap имеет все пиксели на 0 
0  Android-студия «Приложения имеют одинаковое имя пакета» 
1  Android - Interstitialad - ресурсы сервисов Google Play не были найдены 
1  Первое приложение для Android после Eclipse Установить 
2  Как поставить один за один звонок на удержание? [закрыто] 
-1  Как изменить странные и даже пункты меню переполнения меню 
9  Phone Gam [Ошибка] CMD: Команда не удалась с помощью выхода кода Enoent 
0  Android использует RecyClerview с локальной библиотекой RecyClerview вместо загрузки его из Maven Repo 
6  Как использовать OnDateChangedListener, OnDatesetListener без использования DatePickerDialog? 
4  Как получить местное видео URI для Exoplayer 2.x 
0  Разбирайте следующий XML с помощью модернизации SimplexML-конвертера с классом POJO 
1  Проблема с использованием TextureView с NDK 
25  Почему приложение умирает случайным образом? 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.