Để cung cấp cho người dùng ứng dụng của tôi một chỉ báo hiện trường có tiêu điểm tôi đang cố gắng thay đổi màu nền của một số trường tùy thuộc vào trạng thái hiện tại, tuy nhiên, tôi gặp khó khăn khi hiểu Androids Danh sách nhà nước màu Tài nguyên:Cách chỉ định màu nền trong Tài nguyên danh sách trạng thái màu?
tôi thấy ví dụ (xin lỗi, URL không còn hoạt động) và nếu tôi cố gắng chính xác như nhau, tức là nếu tôi muốn để thích ứng với Format, mọi thứ làm làm việc. Tuy nhiên, nếu tôi thử chỉ điều khác biệt hơi khác, cụ thể là để thích ứng với nền màu, mọi thứ không hoạt động và tôi không hiểu tại sao? Tại sao điều này không phù hợp?
Để đơn giản hơn để hiểu những gì tôi đang cố gắng làm, tôi nối thêm linh tinh của mình. file .xml:
Các AndroidManifest.xml
file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mmo.android.test"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Test"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Các Test-Activity
:
package mmo.android.test;
import android.app.Activity;
import android.os.Bundle;
public class Test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Các res/values/strings.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Test!</string>
<string name="app_name">Test</string>
</resources>
res/color/button_test_color.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="#f0f"/> <!-- pressed -->
<item android:state_focused="true" android:color="#ff0"/> <!-- focused -->
<item android:color="#000"/> <!-- default -->
</selector>
và cuối cùng res/layout/main.xml
tập tin của tôi:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="foobar"
android:textColor="@color/button_test_color"
android:background="#f00"
/>
<!--
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="foobar"
android:textColor="#f00"
android:background="@color/button_test_color"
/>
-->
</LinearLayout>
Nếu tôi chạy này như thể hiện ở đây, nó hoạt động, tức là tôi nhận được một nút mà văn bản màu thay đổi tùy thuộc vào việc các nút được tập trung, ép vv
Nếu tôi bỏ ghi chú vào nút dưới, nơi tôi chỉ lật các giá trị thuộc tính cho Format và nền tôi nhận được một ngoại lệ, trong đó nêu
... <item> tag requires a 'drawable' attribute or child tag defining a drawable
Tôi đang thiếu cái quái gì ở đây? Tại sao danh sách trạng thái màu đó được chấp nhận dưới dạng màu văn bản chứ không phải là màu nền? Làm cách nào để xác định màu nền của chế độ xem tùy thuộc vào trạng thái của chế độ xem?
Tạo thêm inf. về việc sử dụng tài nguyên có thể kéo, [câu hỏi này đã được hỏi trước] (http://stackoverflow.com/questions/3506319/android-linearlayout-with-color-resource-what-am-i-doing-wrong). – frayser
Tôi không biết tại sao câu trả lời này được đánh dấu là chính xác. Người hỏi dường như đã theo dõi [tài liệu Android] (http://developer.android.com/guide/topics/resources/color-list-resource.html) cho biết rằng @color sẽ hoạt động tốt với tệp xml trong res/thư mục màu và được gọi bằng tên tập tin. – JulianSymes
Tôi thậm chí còn ngạc nhiên hơn rằng đây là câu trả lời được chọn khi CNTT KHÔNG LÀM VIỆC TẤT CẢ. -1 – Sotti