2011-05-10 56 views
0

圓角的ListView我有一個自定義繪製rounded_corner.xml:無法實現在Android 2.2

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient android:startColor="#FFFFFF" android:endColor="#FFFFFF" 
      android:angle="90"/> 

    <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" 
    android:topLeftRadius="7dp" android:topRightRadius="7dp"/> 
</shape> 

我通過代碼來應用它:

listView.setBackgroundResource(R.drawable.rounded_corner); 

,但我得到的錯誤:

5-09 20:39:17.434: ERROR/AndroidRuntime(1299): FATAL EXCEPTION: main 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.stocktwits.activity/org.stocktwits.activity.WatchlistActivity}: android.content.res.Resources$NotFoundException: File res/drawable-hdpi/rounded_corner.xml from drawable resource ID #0x7f02000d 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:2503) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:651) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.widget.TabHost.setCurrentTab(TabHost.java:323) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:129) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:453) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.view.View.performClick(View.java:2408) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.view.View$PerformClick.run(View.java:8816) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.os.Handler.handleCallback(Handler.java:587) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.os.Handler.dispatchMessage(Handler.java:92) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.os.Looper.loop(Looper.java:123) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at dalvik.system.NativeStart.main(Native Method) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299): Caused by: android.content.res.Resources$NotFoundException: File res/drawable-hdpi/rounded_corner.xml from drawable resource ID #0x7f02000d 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.content.res.Resources.loadDrawable(Resources.java:1697) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.content.res.Resources.getDrawable(Resources.java:581) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.view.View.setBackgroundResource(View.java:7393) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at org.stocktwits.activity.WatchlistActivity.setupUI(WatchlistActivity.java:184) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at org.stocktwits.activity.WatchlistActivity.onCreate(WatchlistActivity.java:127) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  ... 18 more 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #4<gradient> tag requires 'angle' attribute to be a multiple of 45 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.graphics.drawable.GradientDrawable.inflate(GradientDrawable.java:678) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:788) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.graphics.drawable.Drawable.createFromXml(Drawable.java:729) 
05-09 20:39:17.434: ERROR/AndroidRuntime(1299):  at android.content.res.Resources.loadDrawable(Resources.java:1694) 

我該如何診斷?資源存在。

+0

請注意,如果您指定一個「簡單」(不是選擇器)作爲背景可繪製,當您使用軌跡球/ dpad進行導航時,按下時,長按時等不會改變。考慮所有的缺點在沿着這條道路前進(或者提供所有其他狀態爲圓形的thingamajigs)。 – dmon 2011-05-10 03:42:44

回答

0

照照「引發的」堆棧跟蹤的一部分: 二進制XML文件中的行#4標籤要求「角度」屬性是45

+0

謝謝。我將其更改爲90,仍然收到XMLPullParserException。 – 2011-05-10 03:40:05

+0

好的。它現在說什麼? – Buhb 2011-05-10 03:41:36

+0

用新的XML和新的堆棧跟蹤更新了我的問題。 – 2011-05-10 03:44:53

0

多嘗試寫這
角落機器人:半徑= 「7DP」
代替
角機器人:bottomRightRadius = 「7DP」 機器人:bottomLeftRadius = 「7DP」 機器人:topLeftRadius = 「7DP」 機器人:topRightRadius = 「7DP」
將此.xml文件放入可繪製文件夾中,並嘗試使用
listView.setBackgroundDrawable(drawable rounded_corner.xml);

+0

我怎樣才能讓我的白色背景? – 2011-05-10 15:30:43

0

我繼承人如何添加圓角邊框我的名單

<ListView android:layout_width="fill_parent" android:id="@id/android:list" 
android:layout_height="0dip" android:layout_weight="1.0" 
android:background="@drawable/app_user_list_drawable" android:fadeScrollbars="true" 
android:descendantFocusability="afterDescendants" android:layout_margin="10dip" 
android:listSelector="@android:color/transparent" android:paddingLeft="10dip" 
android:paddingRight="10dip" android:divider="#7D7D7D" android:dividerHeight="1px"/> 

app_user_list_drawable.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<corners android:radius="10dip"/> 
<padding android:left="0dip" android:top="1dip" android:right="0dip" 
android:bottom="1dip"/> 
<stroke android:width="1dip" android:color="#7D7D7D"/> 
</shape> 

這創建了一個簡單的白色邊框我的名單圓邊。在列表視圖中的填充是爲了給位空間,或者在添加行時看起來很尷尬。

+0

我似乎無法讓我的白色背景。我怎樣才能做到這一點? – 2011-05-10 15:30:34