无法将颜色转换为可绘制对象
Failed to convert colour into a drawable
所以我是 android 编程的新手,我有一个我根本无法弄清楚的问题。
我想将我的文本背景设为我在基础教程中学习的红色。
但是,问题是当我更改背景颜色时,出现错误:
"Rendering Problems Failed to convert red into a drawable"
这是我在 activity_main:
中编写的代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:text="@string/hello_world"
android:background="red"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
这是我的 colours.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="Red">#E60000</color>
</resources>`
我什至尝试将第 10 行更改为 android:background="@color/red
或 android:background="color/red
甚至 android:background="@android:color/red
但似乎没有任何效果。
有人能帮我解决这个问题吗?
@color/red
仅当您在 colors.xml 文件(位于 res/values 下)
中定义了红色资源时才有效
如果您不想将颜色值输入 colors.xml 文件,请尝试将 android:background
的值更改为红色的十六进制值,例如 #ff0000 .
有很多方法可以做到...
1.-创建一个名为 color.xml
的 Value Resource File
,然后将其添加到其中
<color name="red">#ffff0000</color>
2.-现在将您的 TextView
更改为此,应该可以工作。
<TextView
android:text="@string/hello_world"
android:background="@color/red"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
如果你想通过代码获得那种颜色,你必须使用
getResources().getColor(R.color.red)
或者您也可以像 @DerGolem 所说的那样使用
声明您的颜色
<TextView
android:text="@string/hello_world"
android:background="#FF0000"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
添加文件 colors.xml(在 res/values 中):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="red">#FF0000</color>
</resources>
`
你的代码应该是这样的:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:text="@string/hello_world"
android:background="@color/Red"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
由于您正在使用一些资源文件来声明颜色,因此您需要添加“@color/”以允许 OS 知道您正在引用资源文件。
然后在你的 color.xml 中,你将你的颜色命名为 "Red" 但在 activity 文件中你调用了 id "red",请注意 Id 是区分大小写。所以你在正确的轨道上,你唯一的错误是在资源文件中有一个 "R" 并且在背景颜色变化中有一个 "r" ;)
希望对您有所帮助
编辑:
也可以直接使用android的OSColor,和Id的获取方式一样,只是把Id部分换成Color,See Doc here.
所以我是 android 编程的新手,我有一个我根本无法弄清楚的问题。
我想将我的文本背景设为我在基础教程中学习的红色。 但是,问题是当我更改背景颜色时,出现错误:
"Rendering Problems Failed to convert red into a drawable"
这是我在 activity_main:
中编写的代码 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:text="@string/hello_world"
android:background="red"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
这是我的 colours.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="Red">#E60000</color>
</resources>`
我什至尝试将第 10 行更改为 android:background="@color/red
或 android:background="color/red
甚至 android:background="@android:color/red
但似乎没有任何效果。
有人能帮我解决这个问题吗?
@color/red
仅当您在 colors.xml 文件(位于 res/values 下)
如果您不想将颜色值输入 colors.xml 文件,请尝试将 android:background
的值更改为红色的十六进制值,例如 #ff0000 .
有很多方法可以做到...
1.-创建一个名为 color.xml
的 Value Resource File
,然后将其添加到其中
<color name="red">#ffff0000</color>
2.-现在将您的 TextView
更改为此,应该可以工作。
<TextView
android:text="@string/hello_world"
android:background="@color/red"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
如果你想通过代码获得那种颜色,你必须使用
getResources().getColor(R.color.red)
或者您也可以像 @DerGolem 所说的那样使用
声明您的颜色<TextView
android:text="@string/hello_world"
android:background="#FF0000"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
添加文件 colors.xml(在 res/values 中):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="red">#FF0000</color>
</resources>
`
你的代码应该是这样的:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView
android:text="@string/hello_world"
android:background="@color/Red"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
由于您正在使用一些资源文件来声明颜色,因此您需要添加“@color/”以允许 OS 知道您正在引用资源文件。
然后在你的 color.xml 中,你将你的颜色命名为 "Red" 但在 activity 文件中你调用了 id "red",请注意 Id 是区分大小写。所以你在正确的轨道上,你唯一的错误是在资源文件中有一个 "R" 并且在背景颜色变化中有一个 "r" ;)
希望对您有所帮助
编辑:
也可以直接使用android的OSColor,和Id的获取方式一样,只是把Id部分换成Color,See Doc here.