The right thing to do is to adjust your 9patch with the 9patch tool to
indicate what the padding should be. Those are those pixels on the
right and bottom.

I haven't actually tried setting them to be wider than the stretchable
area, but I'd expect it to work.

But the other issue I've found is that it seems it doesn't actually
draw 9PatchDrawables in the background, but rather the foreground!
Thus, my translucent stretchable area was being drawn on top of my
window content. I made that transparent, but the actual background in
another layer behind the content as a graphic. It makes sort of a
twisted sense, but:

1) It's not documented
2) It's so counterintuitive I consider it a bug on those grounds
alone.

The twisted sense that it makes is that it enables using the
background with a 9patch to implement borders with clipping, by
drawing them on top of the content. And, in fact, moving the graphic
to the background DID result in content on top of border.

But Jeez, Louise....don't use background to draw in the foreground!

On Feb 6, 10:31 am, Mark Nuetzmann <mark.nuetzm...@gmail.com> wrote:
> After a quick search I saw some comments of "what not to do"... but in
> my case it WORKED PERFECT.  Rather than setting the layout background
> in the xml as I had originally done (and what I would have preferred
> to do). I took a little of the code from another post and set the
> background in code.  This worked awesome.
>
>         Bitmap bkBitmap = BitmapFactory.decodeResource(getResources(),
> R.drawable.content_bg);
>         NinePatchDrawable bkDrawable = new NinePatchDrawable(bkBitmap,
> bkBitmap.getNinePatchChunk(),  new Rect(0,0,0,0), null);
>         bkDrawable.setAlpha(96);
>
> findViewById(R.id.content_container).setBackgroundDrawable(bkDrawable);
>
> When I do this the LinearLayout is getting a padding rect of (0,0,0,0)
> from its background and lays out its child views like normal; exactly
> what I wanted.  The background 9-patch now acts only as a background
> rather than a constraint on the contents of the LinearLayout.
>
> Regards,
> Mark
>
> On Feb 6, 12:15 pm, Mark Nuetzmann <mark.nuetzm...@gmail.com> wrote:
>
>
>
> > I have a LinearLayout that I set a background to a 9-patch drawable.
> > It appears that the LinearLayout is somehow forcing its contents to
> > display within the center space defined by its background.  This is
> > really creating problems as the content is being "scrunched" or
> > compressed to a much smaller space that what I anticipated.  I do not
> > have any margins or padding set on the LinearLayout so I know the only
> > place it could be getting this is from the background.  All I wanted
> > was for the background to be a background and not some how contribute
> > to how the LinearLayout laid out its views.  Is there a way to tell
> > the LinearLayout NOT to pull sizing information from its background?
> > I see that the class NinePatchDrawable has a getPadding() but NO
> > setPadding().  I assume that the LinearLayout is getting the padding
> > from NinePatchDrawable and using that to contrain the contents of the
> > layout to a smaller area.  Can I override this without subclassing
> > this class?
>
> > Regards,
> > Mark

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to