2013-03-11 6 views
24

Ich versuche (vergeblich), Ränder zu meinen ListView-Elementen hinzuzufügen. Ich habe versucht, meinem RelativeLayout unten Randwerte hinzuzufügen, aber egal was ich tue, alles, was ich zu bekommen scheint, ist eine 1px Linie zwischen jedem Gegenstand.Marge auf ListView Artikel in Android

Was ich wirklich gerne hätte, ist abgerundete Ecken auf jedem Artikel, ein 1px schwarzer Rand und ein 3-5px Rand links, oben und rechts, aber jetzt begnüge ich mich mit nur einem Rand um jeden Gegenstand: -)

Wie erreiche ich meine Ziele? Nur der Spielraum für jetzt ... ;-)

Hier ist, was ich habe:

UPDATE: ich die xml unter Entfernen Haupt Layout und Fragment-Layout aktualisiert haben. Ich habe auch das Layout des ListView-Elements auf das aktualisiert, was ich jetzt habe, was näher an dem ist, was ich möchte, aber immer noch nicht perfekt. Screenshot hinzugefügt sowie

Listview-Element Layout xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:paddingLeft="@dimen/matchMargin" 
android:paddingRight="@dimen/matchMargin" 
android:paddingTop="@dimen/matchMargin" > 

<RelativeLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#cfcfcfcf" > 

    <include 
     android:id="@+id/matchKampstart" 
     layout="@layout/kampstart_layout" /> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/matchKampstart" 
     android:layout_marginTop="@dimen/belowKampstartMargin" > 

     <ImageView 
      android:id="@+id/tournamentImageView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:layout_marginRight="2dp" 
      android:adjustViewBounds="true" 
      android:contentDescription="@string/tournamentImageViewContentDescription" 
      android:gravity="left" 
      android:src="@drawable/sofabold_launcher" /> 

     <ImageView 
      android:id="@+id/homeTeamImageView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:layout_marginRight="2dp" 
      android:adjustViewBounds="true" 
      android:contentDescription="@string/homeTeamImageViewContentDescription" 
      android:src="@drawable/sofabold_launcher" /> 

     <TextView 
      android:id="@+id/homeTeam" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:layout_marginRight="2dp" 
      android:text="@string/home" 
      android:textSize="14sp" 
      android:textStyle="bold" /> 

     <TextView 
      android:id="@+id/dash" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:layout_marginRight="2dp" 
      android:gravity="center" 
      android:text="@string/dash" 
      android:textSize="12sp" 
      android:textStyle="bold" /> 

     <ImageView 
      android:id="@+id/awayTeamImageView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:layout_marginRight="2dp" 
      android:adjustViewBounds="true" 
      android:contentDescription="@string/awayTeamImageViewContentDescription" 
      android:src="@drawable/sofabold_launcher" /> 

     <TextView 
      android:id="@+id/awayTeam" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:gravity="center" 
      android:text="@string/away" 
      android:textSize="14sp" 
      android:textStyle="bold" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@id/matchKampstart" 
     android:layout_marginTop="@dimen/belowKampstartMargin" > 

     <ImageView 
      android:id="@+id/tvChannelImageView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:adjustViewBounds="false" 
      android:contentDescription="@string/tvChannelImageViewContentDescription" 
      android:gravity="right" 
      android:src="@drawable/sofabold_launcher" /> 
    </LinearLayout> 

</RelativeLayout> 

</RelativeLayout> 

Das gibt mir die folgenden, wo man eine sehr kleine Linie nach rechts auffallen wird, und für jede Position links. Das würde ich auch gerne loswerden.

enter image description here

+0

Haben Sie Marge oder padding wollen? – Sam

+1

Erstellen abgerundete Ecken und eine Grenze ist nicht zu schwer, diese [Developer's Guide] (https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape) erklärt einige der Details. – Sam

+0

Ich will Marge. Ich möchte meine Listenelemente trennen. – CJe

Antwort

59

ich mit Layout nicht groß bin, aber ich habe in der Vergangenheit festgestellt, Diese ListView-Zeilen ignorieren oft LayoutParams. Ich habe keine Ahnung, wo dies der Fall ist oder wenn es möglich ist, außer Kraft zu setzen, ich weiß Sie leicht um es durch das Hinzufügen eines weiteren Layout arbeiten können:

<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> 

Typischerweise Layouts, die entfernt werden, nur ein Kind haben kann, aber wie Sie können sehen dieses dient einem Zweck:

Screen Shot

die am weitesten außen Layout blau ist, die Textview ist rot, und das grün ist das zusätzliche Layout, das Sie etwas mehr Abstand hinzufügen können. Beachten Sie den Unterschied zwischen Padding (das Grün auf der linken Seite) und Rand (kein Grün auf der rechten Seite). Sie haben eindeutig angegeben, dass Sie Ränder (android:layout_margin) verwenden möchten, aber Ihr Code verwendet eindeutig Padding (android:padding), also habe ich beide enthalten.

+0

Danke Sam. Ich denke, ich habe mehr oder weniger wie beschrieben getan (Hinzufügen eines zusätzlichen Layouts). AFAICS haben Sie das gleiche Problem mit den Zeilen auf der rechten Seite (und wahrscheinlich auch links). Irgendeine Idee, wie man diese loswerden kann? – CJe

+2

Mit "sehr kleine Linie" meinst du [diese] (http://i.stack.imgur.com/KnXaV.png)? Dies sind die Teiler, die Sie entfernen können, indem Sie 'android: divider' in ein leeres oder transparentes Bild ändern oder möglicherweise' android: dividerHeight = "0dp" 'setzen. – Sam

+0

Der Grund für das Padding auf dem äußeren RelativeLayout ist gleichzusetzen mit einem Rand auf dem inneren RelativeLayout ... oder? Ich werde versuchen, es umzukehren. – CJe

4

In Ihrem Adapter, fangen Sie Ihr relatives Layout in getView(), dann geben Sie ein Layout params,

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)view.getLayoutParams(); 
params.setMargins(80, 0, 0, 0); //substitute parameters for left, top, right, bottom 
YourRelativeLayoutInAdapter.setLayoutParams(params); 
+0

Danke. Will es versuchen. Keine Möglichkeit, dies durch XML zu tun? Und wenn, warum nicht? – CJe

+1

Ich weiß es nicht genau, aber wenn ich es vorher mit xml versuchte. Ich habe auch nicht für mich gearbeitet. Also löste ich dieses Problem, indem ich Marge im Adapter gab. – Talha

+0

Kann es nicht zur Arbeit bringen. Aktualisierte Frage. – CJe

15

Ein wenig so spät zu sehen, aber fügen Sie einfach die folgenden Zeilen zu Ihrem Listview-XML-Elemente

android:divider="#00000000" 
android:dividerHeight="10dp" 
0

hinzufügen layout_width zu Ihrem ListView und es in der Mitte setzen, oder es durch margin bewegen.

(Vielleicht durch android:layout_centerHorizontal="true".)

Er arbeitete für mich ausgezeichnet.

0

Ich nehme an, Sie haben eine ListView in einer XML-Datei irgendwo definiert, wenn ja, könnten Sie einige padding hinzufügen, so dass es etwas Platz zwischen dem Rand des Bildschirms und der ListView sein wird.

Beispiel:

<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"/> 
Verwandte Themen