Android中动态设置View属性

1、给TextView设置 drawableLeft / drawableTop / drawableRight / drawableBottom:

方式一:

Drawable drawable= getResources().getDrawable(R.drawable.add);
        // 这一步必须要做,否则不会显示.    
        drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
        textview.setCompoundDrawables(drawable,null,null,null);

方式二:

// 设置TextView左上右下图片
            mTextView.setCompoundDrawablesWithIntrinsicBounds(drawableLeft, drawableTop, drawableRight, drawableBottom);  
            mTextView.setCompoundDrawablePadding(drawablePadding);
两者关联,见源码如下:

@android.view.RemotableViewMethod
    public void setCompoundDrawablesWithIntrinsicBounds(@Nullable Drawable left,
            @Nullable Drawable top, @Nullable Drawable right, @Nullable Drawable bottom) {

        if (left != null) {
            left.setBounds(0, 0, left.getIntrinsicWidth(), left.getIntrinsicHeight());
        }
        if (right != null) {
            right.setBounds(0, 0, right.getIntrinsicWidth(), right.getIntrinsicHeight());
        }
        if (top != null) {
            top.setBounds(0, 0, top.getIntrinsicWidth(), top.getIntrinsicHeight());
        }
        if (bottom != null) {
            bottom.setBounds(0, 0, bottom.getIntrinsicWidth(), bottom.getIntrinsicHeight());
        }
        setCompoundDrawables(left, top, right, bottom);
    }

2、给View动态设置margin,获取的LayoutParams是View的父控件类型的LayoutParams:

	    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
            lp.setMargins(0, 0, labelMarginRight, 0);
            mTextView.setLayoutParams(lp);

未完待续。


你可能感兴趣的:(Android)