Изображение исчезает из макета - PullRequest
2 голосов
/ 31 мая 2011

У меня есть относительный макет, который я использую для нескольких отображений списка в моем приложении. В целях разделения у меня есть изображение, которое я заполняю с помощью GradientDrawable между моим верхним баннером и самим фактическим списком. Когда действие запускается впервые, изображение отображается нормально, но как только я взаимодействую с ListView, рисование исчезает. Если я пытаюсь вызвать bringToFront в режиме просмотра изображений, он вообще не рисует.

Понятия не имею, что я делаю не так, пожалуйста, помогите

Вот мой xml-макет:

<RelativeLayout android:id="@+id/listLayout2" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <ImageView android:src="@drawable/icon" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content" 
        android:id="@+id/school_Logo"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="5.0dip" />

    <TextView android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_toRightOf="@+id/school_Logo" 
        android:textSize="15.0sp"
        android:text="List Title" 
        android:id="@+id/List_Title" 
        android:layout_alignTop="@+id/school_Logo" 
        android:layout_alignBottom="@+id/school_Logo" 
        android:gravity="center_vertical"
        android:layout_marginLeft="5.0dip" />

    <ImageView android:id="@+id/Image_Divider" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_below="@+id/school_Logo" 
        android:layout_alignLeft="@+id/school_Logo"
        android:layout_marginBottom="10.0dip" />

    <Button android:text="Post message" 
        android:id="@+id/postButton" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:visibility="gone"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="5.0dip" />

    <ListView android:id="@android:id/list" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:scrollingCache="false"
        android:cacheColorHint="#00000000" 
        android:layout_below="@+id/Image_Divider" />

</RelativeLayout>

и вот как я создаю для него чертеж

int[] colors = {Liveblogging_Main.borderColor,Liveblogging_Main.borderColor,Liveblogging_Main.borderColor};
Drawable dividerDrawable = new GradientDrawable(Orientation.RIGHT_LEFT, colors);

ImageView topDivider = (ImageView) findViewById(R.id.Image_Divider);
topDivider.setImageDrawable(dividerDrawable);

Ответы [ 4 ]

0 голосов
/ 05 апреля 2013

Я считаю, даже обнаружил одну проблему в вашем коде, Дэн Ф:)

Ваш код кажется правильным, я считаю, что есть еще одна проблема, которая не относится к этому коду,

однако, вот лучший пример представления списка, заданного парнями из Google
Интересно, может ли это помочь вам немного

Dev.android.list

0 голосов
/ 01 апреля 2013

Вы пытались установить высоту Image_Divider, ImageView на что-то фиксированное в dp?Я не вижу, откуда берется высота для ImageView (может быть неправильно).

И кстати, почему вы не определяете GradientDrawable в XML?http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape

0 голосов
/ 05 апреля 2013

Попробуйте установить границы рисования

dividerDrawable.setBounds(0, 0, dividerDrawable.getIntrinsicWidth(),dividerDrawable.getIntrinsicHeight());
0 голосов
/ 31 мая 2011

Я не уверен, почему это происходит, но я бы выбрал другую структуру для вашего макета, без RelativeLayout. Попробуйте что-то вроде этого:

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
   <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="Horizontal">
      <ImageView  android:src="@drawable/icon" 
                android:layout_height="wrap_content" 
                android:layout_width="wrap_content" 
                android:id="@+id/school_Logo"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_marginBottom="5.0dip"
                >
       </ImageView>

       <TextView   android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:layout_toRightOf="@+id/school_Logo" 
                android:textSize="15.0sp"
                android:text="List Title" 
                android:id="@+id/List_Title" 
                android:layout_alignTop="@+id/school_Logo" 
                android:layout_alignBottom="@+id/school_Logo" 
                android:gravity="center_vertical"
                android:layout_marginLeft="5.0dip"
                >
       </TextView>
       <Button android:text="Post message" 
                android:id="@+id/postButton" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content" 
                android:visibility="gone"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:layout_marginTop="5.0dip">
       </Button>


   </LinearLayout>
   <ImageView  android:id="@+id/Image_Divider" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" 
                android:layout_below="@+id/school_Logo" 
                android:layout_alignLeft="@+id/school_Logo"
                android:layout_marginBottom="10.0dip"
                >
   </ImageView>
   <ListView   android:id="@android:id/list" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" 
                android:scrollingCache="false"
                android:cacheColorHint="#00000000" 
                android:layout_below="@+id/Image_Divider"
                >
   </ListView>
</LinearLayout>
...