【问题标题】:Programmatically center drawable in a layer-list以编程方式在图层列表中居中绘制
【发布时间】:2020-06-29 08:39:21
【问题描述】:

我想以编程方式生成与此类似的层列表

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="#1e1e1e" />
        <size android:height="45dp"
            android:width="82dp" />
    </shape>
</item>
<item
    android:drawable="@drawable/ic_audio"
    android:gravity="center" />

结果:

主要思想是将ic_audio居中。为了以编程方式执行此操作,我尝试了

LayerDrawable.setLayerGravity();

但这需要 API >= 23 而我目前的最小值是 21。我想不出任何解决方法来获得所需的输出。

如果我删除了

android:gravity="center"

结果:

这会拉伸 ic_audio 以匹配前一层的大小(至少我是这么认为的)。 有什么建议或解决方法吗?

【问题讨论】:

  • 您现在如何以编程方式创建它?即拉伸版本也发布该代码
  • 目前,我没有以编程方式创建它,而是从 xml 资源加载它:LayerDrawable layerDrawable = (LayerDrawable) context.getDrawable(R.drawable.media_art);

标签: android drawable xml-drawable layer-list


【解决方案1】:

你可以像这样使用setLayerInset()

  LayerDrawable layerDrawable = (LayerDrawable) context.getDrawable(R.drawable.layer);
  layerDrawable.setLayerInset(1,100,100,100,100);

第一个参数是层的索引

【讨论】:

  • 请注意:图层第一项的索引为 0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 2015-10-12
  • 2013-11-07
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
相关资源
最近更新 更多