ListViewアイテムにマージンを追加しようとしています(無駄に)。以下のRelativeLayoutにマージン値を追加しようとしましたが、何をしても、各アイテム間に1pxの行があります。
私が本当に欲しいのは、各アイテムの角を丸くし、1pxの黒の境界線と、左、上、右の3-5pxのマージンがあることですが、今は各アイテムの周囲にマージンを設定します:-)
どうすれば目標を達成できますか?とりあえず余白... ;-)
私が持っているものは次のとおりです。
PDATE:メインレイアウトとフラグメントレイアウトを削除して、以下のxmlを更新しました。また、ListViewのアイテムレイアウトを、現在のレイアウトに更新しました。これは、希望に近いものの、まだ完璧ではありません。スクリーンショットも追加されました
リストビューアイテムレイアウト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>
これにより、次のことがわかります。各アイテムの左右に非常に小さな線があります。私も取り除きたいと思います。
私はレイアウトが苦手ですが、過去に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>
通常、子が1つしかないレイアウトは削除できますが、これを見るとわかるように、これには目的があります。
一番外側のレイアウトは青、TextViewは赤、緑は余分な間隔を追加できる追加のレイアウトです。パディング(左側の緑)とマージン(右側の緑なし)の違いに注意してください。マージンを使用することを明確に述べています(Android:layout_margin
)しかし、コードは明らかにパディング(Android:padding
)私は両方を含めました。
これは少し遅れて見えますが、ListView xml要素に次の行を追加するだけです
Android:divider="#00000000"
Android:dividerHeight="10dp"
理由については、こちらの回答をご覧ください。要するに、子は親に尋ね、リストビューの行はAbsListView.LayoutParams
、マージンは含まれません。
アダプターで、getView()で相対レイアウトをキャッチし、レイアウトparamsを指定します。
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)view.getLayoutParams();
params.setMargins(80, 0, 0, 0); //substitute parameters for left, top, right, bottom
YourRelativeLayoutInAdapter.setLayoutParams(params);
XMLファイルのどこかにListView
が定義されていると思います。もしそうなら、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"/>