我的應用程序中有一個嚮導,用戶可以使用「返回」和「下一步」按鈕在活動之間前後移動。這些按鈕對嚮導中的每個活動都是相同的,並且在它們自己的xml佈局中定義,這些佈局將包含在每個活動的佈局中。他們有一個狀態列表作爲他們的背景,通常工作,只有一次,在一段時間出現這種情況:按鈕(有時)不繪製StateList xml背景
預計:
實際:
按鈕定義 - add_nav_buttons.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlAddNav"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
orientation="horizontal">
<Button
android:id="@+id/bAddBack"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@drawable/b_add_nav_button"
android:text="@string/bBack">
</Button>
<Button
android:id="@+id/bAddNext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="@drawable/b_add_nav_button"
android:text="@string/bNext">
</Button>
</LinearLayout>
</RelativeLayout>
包括實例 - some_activity_layout.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlAddMain"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- OTHER STUFF -->
<include
android:id="@+id/NavButtons"
layout="@layout/add_nav_buttons"
android:layout_marginTop="-50dp"
android:layout_alignParentBottom="true">
</include>
</RelativeLayout>
StateList定義 - b_add_nav_button.xml
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false">
<shape>
<gradient
android:startColor="#C7C7C7"
android:endColor="#8B8B8B"
android:angle="270">
</gradient>
<stroke
android:width="1dp"
android:color="#8B8B8B">
</stroke>
<padding
android:left="10dp"
android:right="10dp"
android:top="10dp"
android:bottom="10dp">
</padding>
</shape>
</item>
<item android:state_pressed="true" >
<shape>
<solid
android:color="#FFA319" />
<padding
android:left="10dp"
android:right="10dp"
android:top="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#4F4FB2"
android:endColor="#24248F"
android:angle="270">
</gradient>
<stroke
android:width="1dp"
android:color="#24248F">
</stroke>
<padding
android:left="10dp"
android:right="10dp"
android:top="10dp"
android:bottom="10dp">
</padding>
</shape>
</item>
</selector>
我徹底難倒了,任何幫助,將不勝感激。只是重新迭代,大部分時間都是預期的行爲發生,只是在一段時間內背景無法繪製。
我還應該補充說,按鈕仍然功能上像他們應該的工作。
編輯
我加了一些調試語句,並設法再現。顯然Android有時將b_add_bav_button.xml解釋爲ColorDrawable而不是StateListDrawable。我嘗試將狀態列表中的形狀拉入自己的xml文件中,而不是骰子。我仍然同樣困惑。
即將發生失敗之前會發生什麼? – deed02392 2012-03-15 16:20:55
沒什麼,沒有崩潰或任何錯誤消息或任何東西。此外,它不能在仿真器中重現,並且難以在實際的手機上重現(儘管有些手機似乎比其他手機更容易)。我的想法是,這是一些緩存相關的問題。 – ahal 2012-03-15 16:26:31
看到我上面的修改。 – ahal 2012-03-15 17:26:19