0

私の循環リストビューに取り組んでいます。ほとんどすべての機能を実装していますが、いくつか問題があります。アクティビティが開始されると、listView は次のようになります

しかし、それは正しくありません。https://dl.dropbox.com/u/44444463/Screenshot_2013-02-28-14-37-44.pngのようになります。

これが私の問題です。 アクティビティが開始されると、最初のスクリーンショットのようになります。listViewの要素に触れるか、スクロールすると(要素がたくさんある場合)、スクリーンショット2のようになります。まさに私が必要とするもの。アクティビティ開始時に scrennshot 2 のような画像を取得するにはどうすればよいですか?

listView の OnScrollListener でメソッド @Override public void onScroll(..) をオーバーライドしました。ここで、すべてのパディングを適用します。

    // int x = 30;
    for (int i = 0; i < visibleItemCount; ++i)
    {
        View v = listView.getChildAt(i);

        if (v != null)
        {


            LinearLayout rl = (LinearLayout) v.findViewById(R.id.rl);

            float sin = (float) (v.getTop() + v.getHeight() / 2 - centerOfCircle) / radius;
            double angle = Math.asin(sin);

            int x = (int) (-dXRow + radius * Math.cos(angle));

            if (x < 0)
                x = 0;

            Log.d("MN", "setPadding: " + x);

            rl.setPadding(x, 0, 0, 0);

        }
    }

私の英語で本当にごめんなさい

4

1 に答える 1

0

listView のアダプターの getView() メソッドで開始ペディングを設定する必要があります。そして、必要に応じて onScroll() を再計算します。

OnScroll メソッドは、listView が表示されたときに呼び出されず、スクロールしたときにのみ呼び出されます。

于 2013-02-28T10:56:41.103 に答える