代码之家  ›  专栏  ›  技术社区  ›  tgai

Android可拖动问题

  •  0
  • tgai  · 技术社区  · 14 年前

    我正在尝试创建一个可绘制的代码,并根据某些条件更改颜色。我可以让它工作,但它不想让我在视图上设置填充。任何帮助都将不胜感激。

    <?xml version="1.0" encoding="utf-8"?>
    

    <ImageView
        android:id="@+id/icon"
        android:layout_width="50px"
        android:layout_height="fill_parent"
    />
    
    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="17px"
        android:textSize="28sp"
    />
    

                ImageView icon = (ImageView) row.findViewById(R.id.icon);
            ShapeDrawable mDrawable;
    
            int x = 0;
            int y = 0;
            int width = 50;
            int height = 50;
    
            float[] outerR = new float[] { 12, 12, 12, 12, 12, 12, 12, 12 };
    
            mDrawable = new ShapeDrawable(new RoundRectShape(outerR, null, null));
            mDrawable.setBounds(x, y+height, x + width, y);
    
    
    
            switch(position){
    
            case 0:
                mDrawable.getPaint().setColor(0xffff0000);      //Red
                break;
            case 1:
                mDrawable.getPaint().setColor(0xffff0000);      //Red
                break;
            case 2:
                mDrawable.getPaint().setColor(0xff00c000);      //Green
                break;
            case 3:
                mDrawable.getPaint().setColor(0xff00c000);      //Green
                break;
            case 4:
                mDrawable.getPaint().setColor(0xff0000ff);      //Blue
                break;
            case 5:
                mDrawable.getPaint().setColor(0xff0000ff);      //Blue
                break;
            case 6:
                mDrawable.getPaint().setColor(0xff696969);      //Gray
                break;
            case 7:
                mDrawable.getPaint().setColor(0xff696969);      //Gray
                break;
            case 8:
                mDrawable.getPaint().setColor(0xffffff00);      //Yellow
                break;
            case 9:
                mDrawable.getPaint().setColor(0xff8b4513);      //Brown
                break;
            case 10:
                mDrawable.getPaint().setColor(0xff8b4513);      //Brown
                break;
            case 11:
                mDrawable.getPaint().setColor(0xff8b4513);      //Brown
                break;
            case 12:
                mDrawable.getPaint().setColor(0xffa020f0);      //Purple
                break;
            case 13:
                mDrawable.getPaint().setColor(0xffff0000);      //Red
                break;
            case 14:
                mDrawable.getPaint().setColor(0xffffd700);      //Gold
                break;
            case 15:
                mDrawable.getPaint().setColor(0xffff6600);      //Orange
                break;
            }
    
            icon.setBackgroundDrawable(mDrawable);
            icon.setPadding(5, 5, 5, 5);
    

    如果我在XML中设置填充,它就会忽略它。

    谢谢, 抢劫

    1 回复  |  直到 14 年前
        1
  •  1
  •   Karan    14 年前

    尝试为shapedrawable设置填充( link )

    还有一件事是,填充将移动图像视图内容而不是背景(即图像视图本身)。您正在将Drawable设置为ImageView背景。

    使用setImageDrawable()函数获取图像视图setPadding()效果。