【问题标题】:Android set XML shape as drawable programmaticallyAndroid以编程方式将XML形状设置为可绘制
【发布时间】:2012-06-08 23:29:27
【问题描述】:

您好,我有一个可绘制的 myshape.xml,它包含一个 <shape>,我无法将 android:id 设置为形状。

在我的代码中,我想将视图的背景设置为此文件使用

catAll.setBackgroundDrawable(getResources().getDrawable(R.id......???));

myshape.xml 没有出现在我的 R 文件中,因为它没有 id。我不能将 id 设置为对象。

在我的 XML 中,我通过简单地输入可绘制资源名称来设置形状。但我需要以编程方式执行此操作。

【问题讨论】:

    标签: android xml resources drawable shape


    【解决方案1】:

    您不需要自己获取可绘制对象。改用这个:

    catAll.setBackgroundResource(R.drawable.myshape);
    

    为了将来参考,如果您确实希望获得可绘制对象,请记住可绘制对象位于 R.drawable 命名空间中。所以你的代码会变成:

    getResources().getDrawable(R.drawable.myshape);
    

    这类似于您在 XML 中所做的:

    @drawable/myshape
    

    而不是

    @id/myshape
    

    【讨论】:

    • 指出“R.drawable”命名空间是关键,感谢 K-ballo!
    • getDrawable(id) id 现已弃用。
    【解决方案2】:

    这个问题确实很老,但谷歌首先点击了这个帖子的引用。

    所以getDrawable(id) 已被弃用。

    短解决方案(kotlin)

    yourView.background = ContextCompat.getDrawable(context, R.drawable.your_ressource_id)
    

    更多信息,请阅读:https://stackoverflow.com/a/29146895/4420355

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多