gpt4 book ai didi

android - 如何覆盖 Android 库项目中定义的可绘制对象?

转载 作者:可可西里 更新时间:2023-11-01 18:47:24 25 4
gpt4 key购买 nike

我有两个功能相似但可绘制对象和布局不同的 Android 应用程序。

我想将所有代码和资源放在一个库项目中,并覆盖将引用该库的两个应用程序中的一些可绘制对象和布局。

我创建了一个引用该库的应用程序。我将所有资源从库复制到应用程序并更改了一些可绘制对象。我还更改了一些字符串资源。当我在 Eclipse 的布局编辑器中查看其中一个已更改的布局时,我看到了正确的覆盖图像。

当我启动应用程序时,我看到我在应用程序中更改的字符串资源显示正确(库字符串被应用程序的资源覆盖),但是我的 ImageView 的可绘制对象均取自图书馆资源。

我还对一些布局资源进行了更改(移动并调整了一些图像的大小)。当我启动一个使用更改布局的 Activity (源代码在库中的 Activity )时,我看到新的(应用程序)布局和旧的(库)可绘制对象。

我尝试以两种方式定义 ImageView 的可绘制对象:

  1. 在布局 xml 中:android:src="@drawable/image_id"

  2. 在 Activity 代码中:

    ImageView view = (ImageView)findViewById(R.id.viewId);
    view.setImageResource(R.drawable.image_id);

在这两种情况下,我看到的图像都取自库项目的资源,而不是应用程序。

如果我不能设法解决这个问题,我将不得不复制两个应用程序中的所有代码,这将是一种耻辱。

我做错了什么吗?

最佳答案

根据我的经验,可以通过style和refs.xml来替换library模块中的drawable资源。

首先你需要在样式中声明可绘制资源,比如

<style name="drawable_base_style">
<item name="android:src">@drawable/base</item>
</style>

然后在应用程序(模块或项目,取决于你的IDE)中,重新定义一个样式

<style name="drawable_base_style_app">
<item name="android:src">@drawable/app</item>
</style>

并使用 refs.xml 指向新样式。

<item name="drawable_base_style" type="style">@style/drawable_base_style_app</item>

然后是最后一步:交叉你的手指。

关于android - 如何覆盖 Android 库项目中定义的可绘制对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com