0

画像を表示するグリッド ビューがあります。1 行のグリッドには 3 つの画像のみが含まれます (グリッドの列サイズは 3)。アプリを風景モードで使用していますが、デフォルトでグリッドに何も表示されていない場合、2 つの行を表示できるようにしたいと考えています。グリッドのサイズがグリッド内の 6 項目より大きい場合、つまり 2 行を意味し、スクロールが開始されます。

私はシナリオを与えることができます:-

Image 1                            Image 2                              Image 3

Image 4                            Image 5                              Image 6

画像を配置し、これを横向きモードで使用します。グリッドにアイテムがない場合、これらの6つの画像が常に表示され、グリッドに6より大きいアイテムがある場合、このグリッドがスクロールします。助けてください、事前に感謝します。

4

2 に答える 2

2

さて、私は最初にデフォルト画像のグリッドビューの「デフォルト」配列を作成し、次に画像を埋めるときに画像を置き換えます(レイジーローダーのように)。必要に応じてグリッドビューに適用します。

関連する例:http ://www.stealthcopter.com/blog/2010/09/android-creating-a-custom-adapter-for-gridview-buttonadapter/

于 2012-11-30T18:02:58.047 に答える
2

以下のように GridView をサブクラス化し、代わりにレイアウト ファイルでそのカスタム GridView を使用し、スクロールを無効にするフィールド ( disableScrolling)setAdapterを追加し、6 つ以上の項目をチェックしdispatchTouchEventてスクロール機能を処理するようにオーバーライドします。

public class MyGridView extends GridView {
    boolean disableScrolling = false;

    public MyGridView(Context context) {
        super(context);    
    }

    public MyGridView(Context context, AttributeSet attrs) {
        super(context, attrs);    
    }

    public MyGridView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);    
    }

    @Override
    public void setAdapter(ListAdapter adapter) {
        if (adapter!=null && adapter.getCount() < 6){
            disableScrolling = true;
        } else {
            //adapter is null or count is greater than 6
            disableScrolling = false;
        }
        super.setAdapter(adapter);    
    }
    @Override
     public boolean dispatchTouchEvent(MotionEvent ev){
        if( disableScrolling  || ev.getAction()!=MotionEvent.ACTION_MOVE){
            return true;
        }
        return super.dispatchTouchEvent(ev);
    }
}
于 2012-11-30T18:09:55.233 に答える