コード例 #1
0
  @Override
  protected View createLoadedView() {
    ScrollView mScrollView = new ScrollView(UIUtils.getContext());
    mScrollView.setFillViewport(true); // 设置可以填充父窗体
    // 初始化布局,该布局可以自动分配子View位置,保持每一行都能对齐
    FlowLayout mLayout = new FlowLayout(UIUtils.getContext());
    mLayout.setBackgroundResource(R.drawable.grid_item_bg_normal);
    int layoutPadding = UIUtils.dip2px(13);
    mLayout.setPadding(layoutPadding, layoutPadding, layoutPadding, layoutPadding);
    mLayout.setHorizontalSpacing(layoutPadding);
    mLayout.setVerticalSpacing(layoutPadding);

    int textPaddingV = UIUtils.dip2px(4);
    int textPaddingH = UIUtils.dip2px(7);
    int backColor = 0xffcecece;
    int radius = UIUtils.dip2px(5);
    // 代码动态创建一个图片
    GradientDrawable pressDrawable = DrawableUtils.createDrawable(backColor, backColor, radius);
    Random mRdm = new Random();
    for (int i = 0; i < mDatas.size(); i++) {
      TextView tv = new TextView(UIUtils.getContext());
      // 随机颜色的范围0x202020~0xefefef
      int red = 32 + mRdm.nextInt(208);
      int green = 32 + mRdm.nextInt(208);
      int blue = 32 + mRdm.nextInt(208);
      int color = 0xff000000 | (red << 16) | (green << 8) | blue;
      // 创建背景图片选择器
      GradientDrawable normalDrawable = DrawableUtils.createDrawable(color, backColor, radius);
      StateListDrawable selector = DrawableUtils.createSelector(normalDrawable, pressDrawable);
      tv.setBackgroundDrawable(selector);

      final String text = mDatas.get(i);
      tv.setText(text);
      tv.setTextColor(Color.rgb(255, 255, 255));
      tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
      tv.setGravity(Gravity.CENTER);
      tv.setPadding(textPaddingH, textPaddingV, textPaddingH, textPaddingV);
      tv.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              UIUtils.showToastSafe(text);
            }
          });
      mLayout.addView(tv);
    }
    mScrollView.addView(mLayout);
    return mScrollView;
  }