为小部件设计布局

时间:2013-07-17 11:28:00

标签: android android-layout android-widget

有人可以指导我如何设计小部件的布局,如附图所示

  1. 加星标的部分将是名人的缩略图
  2. 对角线分隔线“/”上方和下方的部分应具有 分开的听众。
  3. 有人可以让我以最有效的方式设计这种布局吗?

    非常感谢任何帮助。

    enter image description here

1 个答案:

答案 0 :(得分:1)

当然有很多可能的解决方案。一个简单的方法是:

  • 使用标准ListView
  • 让自定义适配器(为此目的扩展BaseAdapter)填充每一行
  • 列表项的布局应使用水平方向的LinearLayout
  • 仅为" /"创建自定义窗口小部件分频器
  • 在列表项的布局中放置一个ImageView(用于名人图片)并添加为自定义" /"的菜单。你需要的小部件

对于您的自定义小部件,我建议扩展现有的Android小部件,而不是从头开始构建。扩展FrameLayout可能是一个很好的解决方案,因为你可以有一个由三角形叠加覆盖的背景背景。使用onTouchListener,您可以检测到哪些被单击。

这样,通过使用尽可能多的标准解决方案,可以最大限度地减少创建此类窗口小部件的工作量。

以下是自定义窗口小部件的一个抽象示例实现:

    public class DividedView extends FrameLayout implements OnTouchListener {
          public void onCreate(Context context, AttributeSet attr){
              View firstView =  createFirstView();

              View secondView = createSecondView(); //this view has a triangle shape but with a transparent buttom-right corner... but the boundaries match the complete size of this custom widget... therefore this view consumes all touch events
              secondView.setOnTouchListener(this);

              addView(firstView);
              addView(secondView);
          }

          ...

          public boolean onTouch(MotionEvent event){
              switch(event.getAction(){
                   case MotionEvent.ACTION_DOWN:
                    //detect if coordinates of touch down are in boundaries of first or second view... if yes trigger click event for firstView or secondView depending on coordinates
                    break;
              }
          }

          //via this method you can set corresponding click listener for each of the divided views
          public void setFirstViewOnClickListener(OnClickListener onClickListener)
          ...

    }