【问题标题】:Want to create a circular list in android想在android中创建一个循环列表
【发布时间】:2013-03-12 09:08:55
【问题描述】:

过去 3 天以来,我一直面临一个小问题。我的任务是设计一个有两个片段的屏幕。(左侧和右侧)

左侧片段会包含一个列表,但是这个列表会出现在圆形视图中,例如

|@
|->@

|--->@

|----->@

|------>@

|------->@

|------->@

|------->@

|------>@

|----->@

|---->@

|-->@

|@

它应该是可旋转的,当我旋转列表时,我必须显示与第二个(右侧)片段中心的列表项相对应的数据。我打算使用片段。

谁能帮我解决这个问题

谢谢

【问题讨论】:

    标签: android list mobile circular-list


    【解决方案1】:

    这是我的建议:

    您可以使用 ListView,然后自己绘制所有子视图。

    好的,你可以这样做:

    通过创建一个新类并从 ListView 类派生该类来创建您自己的 ListView。 然后,如果需要,您可以使用此方法 setDivider(Drawable divider) 删除分隔符 然后你将不得不使用 drawChild(Canvas canvas, View child, long drawingTime) 此外,您最终可能会使用此方法以及受保护的 void dispatchDraw (Canvas canvas) ///将需要在新的 ListView 类中被覆盖以获得更多控制权

    如果循环列表中只有字符串,那么您将不得不从列表项的中间索引开始截断字符串......产生圆周运动效果。

    这里我考虑的是ListView类会在每次列表有移动的时候调用drawChild方法,我们可以在那里产生轻微的动画

    让我知道你的进展如何......

    【讨论】:

      【解决方案2】:

      如果您将使用自定义适配器,则在您的 bindview 方法中..获取每个子视图并为视图提供一个新的边距布局参数,该参数具有根据当前子视图总数递增和递减的乘数。

      您可以通过 getCount(); 获得总孩子数;

      将边距布局应用到视图组。

      我做了同样的事情,只是我的结构对应于梯形图案。

      编辑: 这些是我的代码中的一些损坏的 sn-ps,可以让您了解一下。

      //This is my custom adapter that extends CursorAdapter
       @Override
          public void bindView(View view, Context context, final Cursor cursor) 
      {
      final RelativeLayout parent = (RelativeLayout)view.findViewById(R.id.text_wrapper);
      //This is a parent view that i assigned as a top parent in my xml defining rows of listview
      I am finding it through view of bindview. If i don't do this I'll get NPE.
      
      //this is how you will be setting margins for each view
      
      ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) parent
                      .getLayoutParams();
      //here I am getting my relative layouts margin params.
      mlp.leftMargin = 50*multiplier; //this will offset your each row. here multiplier can be like 0,1,2,3,2,1,0 giving you a circular view.you might have to write some method to get your desired multiplier value.
      

      每次调用 NotifyDatasetChanged 时都会调用绑定视图,并为屏幕上可见的每一行调用。因此,您可以获得可见行的圆形模式。

      }

      【讨论】:

      • 感谢您的回复,您能否将代码发送给我 brsudheerbr@gmail.com
      • 抱歉,我无法将代码发送给您,因为它对其他人没有帮助。另外,我不能在这里给你一个代码,因为我的后台实现与你的项目可能是完全不同的。我给您的损坏的 sn-ps 是为了让您了解如何实现自己的实现。如果我能提供更多帮助,请告诉我。
      猜你喜欢
      • 2022-07-12
      • 1970-01-01
      • 2019-06-19
      • 2015-02-13
      • 1970-01-01
      • 2020-07-13
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多