0

我一直面临一个非常奇怪的问题。我看不到我设计的 UI 的预览。我正在尝试将视图的背景设置为定义的渐变。我不知道是什么导致了问题。这是 UI xml 和 Gradient xml 的代码。

渐变 XML,vertical_fade.xml

<?xml version="1.0" encoding="utf-8"?>
<shape
    android:shape="line" xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient 
        android:startColor="#ffffff"
        android:centerColor="#000000"
        android:endColor="#ffffff"
        android:angle="270"/>
</shape>

和 UI xml 的代码,这个 xml 是列表行的布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:fadingEdgeLength="5dp"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:paddingRight="?android:attr/scrollbarSize" >

    <ImageView 
        android:id="@+id/contact_type_icon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/call"
        android:layout_margin="2dp" 
        />

    <View
        android:id="@+id/type_divider"
        android:layout_width="3dp"
        android:layout_height="fill_parent"
        android:background="@drawable/vertical_fade"
        android:layout_marginLeft="3dp" />

    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:paddingLeft="4dp"
        android:layout_weight="6">

        <TextView 
            android:id="@+id/detail_type"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:text="Detail_Type" />

        <TextView
            android:id="@+id/detail_detail"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"
            android:text="Detail_Detail" />
    </LinearLayout>

    <LinearLayout 
        android:gravity="right"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1">

    <View 
        android:id="@+id/type_divider_secondary"
        android:layout_width="3dp"
        android:layout_height="fill_parent"
        android:background="@drawable/vertical_fade"
        android:layout_marginRight="3dp"
        />

    <ImageView
        android:id="@+id/second_action"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/sms" 
        android:layout_gravity="right"
        android:layout_margin="2dp" />
    </LinearLayout>
</LinearLayout>

在 UI 中,使用的两个视图是我收到错误的点。

好吧,LogCat 说

  03-05 23:47:42.886: E/AndroidRuntime(717): java.lang.NullPointerException
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.graphics.Canvas.drawLine(Canvas.java:809)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.graphics.drawable.GradientDrawable.draw(GradientDrawable.java:349)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.View.draw(View.java:6865)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.widget.AbsListView.dispatchDraw(AbsListView.java:1480)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.widget.ListView.dispatchDraw(ListView.java:3138)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.View.draw(View.java:6986)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.widget.AbsListView.draw(AbsListView.java:2584)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.View.draw(View.java:6883)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.widget.FrameLayout.draw(FrameLayout.java:357)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.View.draw(View.java:6883)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.widget.FrameLayout.draw(FrameLayout.java:357)
03-05 23:47:42.886: E/AndroidRuntime(717):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1862)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewRoot.draw(ViewRoot.java:1522)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1258)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.os.Looper.loop(Looper.java:123)
03-05 23:47:42.886: E/AndroidRuntime(717):  at android.app.ActivityThread.main(ActivityThread.java:3683)
03-05 23:47:42.886: E/AndroidRuntime(717):  at java.lang.reflect.Method.invokeNative(Native Method)
03-05 23:47:42.886: E/AndroidRuntime(717):  at java.lang.reflect.Method.invoke(Method.java:507)
03-05 23:47:42.886: E/AndroidRuntime(717):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-05 23:47:42.886: E/AndroidRuntime(717):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-05 23:47:42.886: E/AndroidRuntime(717):  at dalvik.system.NativeStart.main(Native Method)
4

1 回答 1

4

错误在于 shape="line"。

将此代码用于渐变背景:

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape>
        <gradient
            android:angle="90"
            android:startColor="#ffffff"
            android:centerColor="#000000"
            android:endColor="#ffffff"
            android:type="linear" />
    </shape>
</item>
</selector>
于 2013-03-05T18:30:37.897 回答