3

.xmlファイルに画像ビューとグリッドビューがあります。このファイルを実行すると、グリッドビューと画像ビューの間にスペースができます。このスペースを回避する方法...誰かがこの問題を解決するのを手伝ってくれますか?事前に感謝します...私のxmlコードは次のとおりです。

    android:layout_width="0px"
    android:layout_height="0px">
</Button>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/prevMonth"
        android:src="@drawable/cal_left_arrow_off2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </ImageView>
    <Button
        android:id="@+id/currentMonth"
        android:layout_weight="0.6"

        android:textAppearance="?android:attr/textAppearanceMedium"
        android:background="@drawable/calendar_bar2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </Button>
    <ImageView
        android:id="@+id/nextMonth"
        android:src="@drawable/cal_right_arrow_off2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </ImageView>
</LinearLayout>
<LinearLayout
    android:layout_gravity="bottom|center_horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/calendarheader"
        android:src="@drawable/blue_bg_with_text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        >
        </ImageView>
</LinearLayout>
<GridView
    android:id="@+id/calendar"
    android:numColumns="7"
    android:layout_gravity="top"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
</GridView>

4

1 に答える 1

2

android:gravity属性を正しく設定してみてください。動作する必要があります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:gravity="bottom|center_horizontal" 
        android:layout_width="fill_parent" android:layout_height="wrap_content">
        <ImageView android:id="@+id/calendarheader" android:src="@color/blue_start"
            android:layout_width="wrap_content" android:layout_height="wrap_content" 
             android:minWidth="250dp" android:minHeight="30dp">
        </ImageView>
    </LinearLayout>
    <GridView android:id="@+id/calendar" android:numColumns="7"
        android:layout_gravity="top" 
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:background="@color/blue_start">
    </GridView>
</LinearLayout>

ここでは単純な色の背景を使用していますが、ギャップはありません:

ギャップなし

それでも問題が解決しない場合blue_bg_with_text2は、下部に空のピクセルがあるかどうかにかかわらず、画像が表示されるはずです。

ps: そのandroid:minWidth="250dp" android:minHeight="30dp"部分は無視してください。そのサイズの画像を模倣するためにあります。

アップデート

RelativeLayout を使用した同じビューを次に示します (少なくとも私にとっては少し明確です)。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button android:id="@+id/selectedDayMonthYear"
        android:textColor="#000000" android:layout_gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="0px" android:layout_height="0px" />
    <ImageView android:id="@+id/prevMonth" android:src="@drawable/cal_left_arrow_off2"
        android:layout_width="wrap_content" android:layout_height="wrap_content" />
    <ImageView android:id="@+id/nextMonth" android:src="@drawable/cal_right_arrow_off2"
        android:layout_width="wrap_content" android:layout_height="wrap_content"
        android:layout_alignParentRight="true" />
    <Button android:id="@+id/currentMonth" android:layout_weight="0.6"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:background="@drawable/calendar_bar2" android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/prevMonth"
        android:layout_toLeftOf="@id/nextMonth"
        android:layout_alignBottom="@id/prevMonth"
        android:layout_alignTop="@id/prevMonth" />
    <ImageView android:id="@+id/calendarheader" android:src="@drawable/calendarheader"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:minHeight="25dp"
        android:layout_centerInParent="true"
        android:layout_below="@id/currentMonth"
        android:layout_margin="0dp" 
        android:scaleType="fitXY" />
    <GridView android:id="@+id/calendar" android:numColumns="7"
        android:layout_gravity="top" android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/calendarheader"
        android:layout_margin="0dp" 
        android:background="@color/white_fader_end">
    </GridView>
</RelativeLayout>

背景としてリソースを追加しました (そのうちの 2 つは、実際にはあなたのスクリーンショットです)。私が観察したことは、あなたがしなければならないということです

  • カレンダーのヘッダーの背景に静止画像を使用するか、
  • xml ドローアブルを使用する場合は、そこからストローク要素を削除するか、android:width0 に設定する必要があります

そうしないと、ビューのドローアブルの周りに、指定したストローク幅と同じ幅の不要なギャップが追加されます。

背景として静的画像を使用した私の出力は次のようになります。

ギャップがない 2

更新 2

問題は、カレンダー ヘッダーと gridView の間ではなく、 gridView 内にあります
内部に 5 ピクセルの「パディング」があります (実際のパディングではありません。どのようにそこに到達するかを確認してください)。

のデフォルトselectorGridView、境界線が 5px の 9x9 パッチ長方形です。
その 5 ピクセルは、gridView 全体に表示されます。xml を使用して、このグリッドに別の listSelector を指定できます。

    android:listSelector="@drawable/grid_selector"

またはコードから(onCreate):

    gridView.setSelector(R.drawable.grid_selector);

grid_selector が画像であるか、マージンのない描画可能な xml である場合、問題の原因となるギャップはなくなりました。

また、背景色を gridView に設定することで、カレンダー ヘッダーの背景色と一致または勾配をつけて、そのギャップを隠すこともできます。

于 2011-04-16T06:11:46.630 に答える