Маржа на ListView элементов в Android

Попробуйте следующий код

           $('.button').keypress(function(e){
              if(e.which == 13){
                  $(this).css('background-color','#FFF');
              }
            });

            $('.button').keyup(function(e){
              if(e.which == 13){
                  $(this).css('background-color','');
              }
            });
29
задан CJe 11 March 2013 в 17:06
поделиться

5 ответов

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:background="#990000ff" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="10dp"
        android:layout_marginTop="10dp"
        android:background="#9900ff00"
        android:paddingLeft="10dp" >

        <TextView
            android:id="@+id/text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#99ff0000" />
    </LinearLayout>

</LinearLayout>

Обычно макеты, которые имеют только одного дочернего элемента, могут быть удалены, но как Вы можете видеть, что это служит цели:

Screen Shot

Самый внешний макет - синий, TextView - красный, а зеленый - это дополнительный макет, который позволяет вам добавить дополнительный интервал. Обратите внимание на разницу между отступом (зеленый слева) и полем (зеленый справа нет). Вы четко заявили, что хотите использовать поля (android:layout_margin), но ваш код явно использует отступы (android:padding), поэтому я включил оба.

65
ответ дан Sam 11 March 2013 в 17:06
поделиться

Немного опоздал, увидев это, но просто добавьте следующие строки в ваш элемент ListView xml

android:divider="#00000000"
android:dividerHeight="10dp"
16
ответ дан Zac Sweers 11 March 2013 в 17:06
поделиться

Смотрите ответ здесь, почему. Короче говоря, ребенок спрашивает родителя, а строка представления списка использует AbsListView.LayoutParams, который не включает поля.

Почему поле LinearLayout игнорируется, если используется как представление строки ListView

12
ответ дан Community 11 March 2013 в 17:06
поделиться

Я полагаю, что у вас есть ListView, определенный где-то в XML-файле, если да, вы можете добавить к нему немного padding, чтобы между краем экрана и ListView было некоторое пространство.

Пример:

<ListView
    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:padding="15dp"/>
1
ответ дан New2HTML 11 March 2013 в 17:06
поделиться

В вашем адаптере поймайте ваш относительный макет в getView (), затем укажите параметры макета,

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)view.getLayoutParams();
params.setMargins(80, 0, 0, 0); //substitute parameters for left, top, right, bottom
YourRelativeLayoutInAdapter.setLayoutParams(params);
4
ответ дан Talha 11 March 2013 в 17:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: