0

ヘッダーパネルとリストビューのあるレイアウトがあります。

これがレイアウトです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/mainFragmentLayout">

<RelativeLayout
        android:id="@+id/header"
        android:background="@drawable/upper_panel"
        android:layout_height="40dp"
        android:layout_width="fill_parent">

    <TextView android:id="@+id/news_label"
              android:layout_height="wrap_content"
              android:layout_width="wrap_content"
              android:layout_centerVertical="true"
              android:gravity="left"
              android:text="@string/news_label"
              android:textSize="15sp"
              android:textStyle="bold"
              android:layout_marginLeft="54dp"
              android:textColor="@color/white"
            />

    <Button android:id="@+id/refreshButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:background="@drawable/btm_refresh"
            android:layout_centerVertical="true"
            android:layout_marginRight="8dp"
            />
</RelativeLayout>

<ListView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="120"
        android:id="@+id/feedMeMore"
        android:fastScrollEnabled="false"
        android:layout_gravity="center"/>

onTouchListenerで、RelativeLayotヘッダーを削除して追加します。

public boolean onTouch(View view, MotionEvent motionEvent) {

int action=motionEvent.getAction();
switch (action) {
    case MotionEvent.ACTION_DOWN:
        startY = motionEvent.getY();
        break;
    case MotionEvent.ACTION_MOVE:
        float nowY = motionEvent.getY();
        if (startY - nowY > 10)
        {
            if (mainLayout.indexOfChild(headerView) >= 0)
                mainLayout.removeView(headerView);
        }
        else if (startY - nowY < - 100)
        {
                    if (mainLayout.indexOfChild(headerView) < 0)
                    mainLayout.addView(headerView, 0);              
        }
    }
    break;
}
return false;
}

ヘッダーが削除されると、リストビューに表示されているすべてのアイテムが再ロードされます。Webから読み込まれる画像とテキストがあり、テキストと画像を再読み込みするたびに表示されます。

このリロードをオフにする方法は?

4

1 に答える 1

1

私によると、それはあなたの headerView が(リニアレイアウトであっても)上部に配置され、リストビューがその下にあるためです。したがって、ヘッダービューを削除すると、リストビューの高さが変更されるため、すべてのビューが再描画されます。

解決策として、元のヘッダー ビューと同じ高さのヘッダー ビューの背後にあるダミー ビュー (親ビューを RelativeLayout として変更する必要があります) を使用できます。これで、リスト ビューは元のヘッダーではなく、そのダミー ヘッダー ビューの下になります。見る。

このようなもの。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mainFragmentLayout">

<RelativeLayout
    android:id="@+id/header"
    android:background="@drawable/upper_panel"
    android:layout_height="40dp"
    android:layout_alignParentTop="true"
    android:layout_width="fill_parent">

<TextView android:id="@+id/news_label"
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:layout_centerVertical="true"
          android:gravity="left"
          android:text="@string/news_label"
          android:textSize="15sp"
          android:textStyle="bold"
          android:layout_marginLeft="54dp"
          android:textColor="@color/white"
        />

<Button android:id="@+id/refreshButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:background="@drawable/btm_refresh"
        android:layout_centerVertical="true"
        android:layout_marginRight="8dp"
        />
</RelativeLayout>

<RelativeLayout
    android:id="@+id/dummyHeader"
    android:background="@drawable/upper_panel"
    android:layout_height="40dp"
    android:layout_alignParentTop="true"
    android:layout_width="fill_parent"/>

<ListView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="120"
        android:id="@+id/feedMeMore"
        android:fastScrollEnabled="false"
        android:layout_gravity="center"/>
于 2013-01-04T14:15:34.120 に答える