ImageView won't fill parent

前端 未结 4 1369
轻奢々
轻奢々 2021-01-05 01:31

I have a ScrollView on one of my screens. I want the right edge to have a shadow. I decided the easiest way to do this was to make the child of the ScrollView a RelativeLa

相关标签:
4条回答
  • 2021-01-05 01:46

    try this

    <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="fill_parent"
                    android:background="@drawable/ic_launcher"
                    android:scaleType="fitXY"
                    android:layout_alignParentRight="true"
                    />
    

    here is what I get

    enter image description here

    and code id

    <?xml version="1.0" encoding="utf-8"?>
    

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true"
        android:scrollbars="none" >
    
        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
    
                <!-- stuff -->
            </LinearLayout>
    
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_alignParentRight="true"
                android:background="@drawable/ic_launcher"
                android:scaleType="fitXY" />
        </RelativeLayout>
    </ScrollView>
    

    0 讨论(0)
  • 2021-01-05 01:51

    Applying drawable content as the source of an ImageView somewhat carries with it an inherent requirement that you want the view to do what it can to accomodate the content without modifying the content itself very much. Typically, this is the behavior you would want out of an ImageView.

    What you really want is the behavior you get by setting drawable content as the background of a view, for which you don't really need ImageView at all. A background is designed to simply stretch, fill, etc. to whatever size the view is. Also, since you are using RelativeLayout you can tell the view to match the bound of the view you are shadowing by adding an id and some extra layout_alignparameters.

            <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" >
    
                <LinearLayout
                    android:id="@+id/content_layout"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" >
                <!-- stuff -->
                </LinearLayout>
    
                <View
                    android:layout_width="11dp"
                    android:layout_height="fill_parent"
                    android:layout_alignParentRight="true"
                    android:layout_alignTop="@id/content_layout"
                    android:layout_alignBottom="@id/content_layout"
                    android:background="@drawable/shadow"
                    />
            </RelativeLayout>
    
    0 讨论(0)
  • 2021-01-05 01:54

    You wanted a Shadow towards the right of your image, Then use single layout with Horizontal Orientation, It's good that you have decide to use Relative Layout. Use

    android:orientation="vertical"
    

    inside this layout, add those two images. If you still have a doubt, give me those two images or sample images, i will give you the code

    0 讨论(0)
  • 2021-01-05 02:01

    Your problem has nothing to do with the ImageView or 9-patch itself, but rather with the fact that you're wrapping everything in a ScrollView. A ScrollView will automatically force its children direct child to wrap its content, no matter whether you tell it to FILL_PARENT or MATCH_PARENT - both do exactly the same thing by the way; the only difference is the name, which reflects better the actual behaviour of the flag.

    Fortunately ScrollView provides a way to force it to fill the viewport with a flag, which will make the behaviour pretty similar to setting FILL_PARENT to a regular view. Either add the attribute android:fillViewport or use setFillViewport() from code.

    Edit: Just to be clear, you need to set that flag on the ScrollView. Also, if it's the ScrollView that should have the shadow, can you not send your 9-patch as background to it? I suppose it does depend on what your actual image looks like. Regarding you comment: yes, the RelativeLayout is flexible in terms of positioning and sizing children, but any child will still be bound to the size of its parent.

    I do have the feeling that some of us may be working towards something different than what you have in mind. It would definitely help to clarify things with a simple drawing.

    0 讨论(0)
提交回复
热议问题