代码之家  ›  专栏  ›  技术社区  ›  Rgfvfk Iff

编程创建的drawable未显示在imageview中

  •  1
  • Rgfvfk Iff  · 技术社区  · 6 年前

    我正在尝试创建一个可在图像视图内绘制的矩形。

    val backgroundRect = GradientDrawable()
    backgroundRect.shape = GradientDrawable.RECTANGLE
    backgroundRect.setBounds(0,0, 100, 100)
    backgroundRect.setStroke(5, Color.parseColor("#585858"))
    backgroundRect.setColor(Color.parseColor("#FF9009"))
    
    val image = ImageView(context)
    image.layoutParams = ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT)
    image.setImageDrawable(backgroundRect)
    rootView.addView(image)
    

    问题是如果我设置 ImageView 布局参数为 WRAP_CONTENT image.layoutParams = ConstraintLayout.LayoutParams(100, 100) 然后 显示。我试着用xml创建一个可绘制的矩形,如果我设置了它,图像仍然会显示出来。

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/dummyRectangle"/>
    

    我需要始终指定layout params变量还是有其他方法来设置它?

    3 回复  |  直到 6 年前
        1
  •  0
  •   Anisuzzaman Babla Jayesh Elamgodil    6 年前

    只需为您的 GradientDrawable

    backgroundRect.setSize(100,100);
    

    因为你的视图还没有大小。当您使用wrap_content时,您没有任何要包装的内容。

        2
  •  0
  •   Mahdi M    6 年前

    backgroundRect . 这个 背景矩形 没有任何大小,当您将其设置为包装内容时,它不会显示。

        3
  •  0
  •   Kaveri    6 年前

    需要为至少一个imageview指定大小或可绘制。

    对于渐变可绘制,可以按照上面的回答进行,现在imageview根据可绘制的大小进行包装。

    否则,如果imageview被赋予了一个大小,根据文档:-

    默认情况下,形状缩放到与此处定义的尺寸成比例的容器视图的大小。在ImageView中使用形状时,可以通过将android:scaleType设置为“center”来限制缩放

    1.从xml中提取图纸。//在xml中定义drawable的大小。

    2。 You can also draw your shape as its own custom view and add it to a layout in your app.

    三。 create some custom drawings, you can do so by extending the Drawable class, later set in to imageview