android gradientdrawable 参数,Android的:如何在层列表中更改GradientDrawable的大小编程...

android:width="3dp"

android:color="@color/gray4"/>

android:drawable="@drawable/dot_pattern_bitmap"/>

这是在自定义的FrameLayout customView.xml使用:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:src="@drawable/layers"/>

它本身被用于例如在

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:padding="@dimen/space_m"

android:orientation="vertical">

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

此外,我有CustomView.java类来编辑自定义视图(特别是图层)的行为。

在那里,我试图根据customView的大小(和参数'ratio')实现层列表大小的更新。我试过这样:

// ...

@Override

protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

layoutWidth = MeasureSpec.getSize(widthMeasureSpec);

layoutHeight = MeasureSpec.getSize(heightMeasureSpec);

readjustSize(ratio);

}

private void readjustSize(final double ratio) {

if (layoutHeight != 0 && layoutWidth != 0) {

// determine desired width and height using the layout width

int desiredWidth = layoutWidth;

int desiredHeight = (int) (layoutWidth/ratio);

// if it does not fit, adjust using the layout height

if (desiredHeight > layoutHeight) {

desiredHeight = layoutHeight;

desiredWidth = (int) (layoutHeight * ratio);

}

// get the basic layer

final LayerDrawable ld =

(LayerDrawable) ContextCompat.getDrawable(getContext(), R.layers);

final GradientDrawable outerRectShape =

(GradientDrawable) ld.findDrawableByLayerId(R.id.outer_rect);

// and adapt the size

outerRectShape.setSize(desiredWidth, desiredHeight);

outerRectShape.setBounds(0, 0, desiredWidth, desiredHeight);

// redraw

invalidate();

requestLayout();

}

}

所以,那是很多代码...不幸的是,这不能正常工作。如果第一次加载框架布局,我只能看到一个非常小的矩形。

b16433dfb28385b4cd5f939e0ac09a64.png

是否有人有想法:

8d83f58cc7b6e486f84fd4fd74e59c32.png

只有当我来回切换这个观点,因为我想规模应用?

2016-10-18

Caro

+0

将ImageView设置为match_parent的宽度。 –

+0

ImageView本身的宽度上有match_parent。包含视图不会,但我已经尝试了宽度和高度的match_parent,仅限宽度或没有(如发布)。这没有任何改变。 –

+0

在FrameLayout中,它是wrap_content。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GradientDrawable类是Android的一个可绘制对象,用于绘制渐变图形。它可以绘制矩形、椭圆形、线条等,还可以设置渐变效果、边框、圆角等属性。 以下是GradientDrawable类的一些常用属性: 1. 形状:可以设置矩形、椭圆形、线条等形状。 2. 渐变效果:可以设置线性渐变、放射性渐变、扫描性渐变等。 3. 颜色:可以设置渐变颜色、填充颜色、描边颜色等。 4. 边框:可以设置边框的粗细、颜色等属性。 5. 圆角:可以设置圆角的大小。 使用GradientDrawable类创建一个渐变背景,可以通过以下步骤: 1. 创建GradientDrawable对象。 2. 调用setShape()方法设置图形形状。 3. 调用setColor()方法设置填充颜色。 4. 调用setStroke()方法设置边框。 5. 调用setCornerRadius()方法设置圆角。 6. 调用setGradientType()方法设置渐变类型。 7. 调用setGradientCenter()方法设置渐变心点。 8. 调用setGradientRadius()方法设置渐变半径。 9. 调用setColors()方法设置渐变颜色。 10. 将GradientDrawable对象设置为View的背景。 例如,以下代码可以创建一个渐变背景: ``` GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setShape(GradientDrawable.RECTANGLE); gradientDrawable.setColor(Color.WHITE); gradientDrawable.setStroke(2, Color.BLACK); gradientDrawable.setCornerRadius(10); gradientDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT); gradientDrawable.setGradientCenter(0.5f, 0.5f); gradientDrawable.setGradientRadius(100); gradientDrawable.setColors(new int[]{Color.RED, Color.BLUE}); button.setBackground(gradientDrawable); ``` 这将创建一个矩形背景,填充颜色为白色,描边为黑色,圆角为10px,渐变类型为线性渐变,渐变心点为控件心,渐变半径为100px,渐变颜色为红色和蓝色。最后将GradientDrawable对象设置为Button的背景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值