【问题标题】:Circular listview android循环列表视图android
【发布时间】:2013-02-28 10:53:21
【问题描述】:

我正在处理我的循环列表视图。我实现了几乎所有的功能,但我有一些问题。当我的活动开始时,我的 listView 看起来像:https://dl.dropbox.com/u/44444463/Screenshot_2013-02-28-14-37-17.png

但这是不对的。它应该看起来像:https://dl.dropbox.com/u/44444463/Screenshot_2013-02-28-14-37-44.png

这是我的问题。 当活动开始时,它看起来像第一个屏幕截图。如果我触摸 listView 中的任何元素,或者滚动它(如果有很多元素),它就像在 screenshot2 中一样。正是我需要的。 如何在活动开始时拍摄像 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);

        }
    }

真的对不起我的英语

【问题讨论】:

    标签: android listview


    【解决方案1】:

    您应该在 listView 的适配器的 getView() 方法中设置起始 peddings。然后根据需要重新计算它们 onScroll()。

    在listView出现时不会调用OnScroll方法,只有当你滚动它时才会调用。

    【讨论】:

    • 其调用的 ater 活动开始。它的工作有点奇怪。例如,如果我应用固定填充 80,它将看起来像这样:dl.dropbox.com/u/44444463/Screenshot_2013-02-28-15-20-47.png 所以我需要重建我的行视图? invalidete() 无效
    • 为什么不在 getView() 方法中设置所需的填充或边距?
    • 我不知道如何获得顶部视距。有可能吗?
    • 你可以尝试使用View类的getTop()和getBottom()方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    相关资源
    最近更新 更多