Non-Standard widget size for Android - android

I have a use-case for a vertical 1x4 home screen widget on android. The supported size is 4x1 ie horizontal. Does anyone know if the vertical version can be implemented?
I realize changing screen orientation would scrunch the widget together, which I'm fine with. Even better would be if there was an equivalent to "overflow hidden" in css.
Has anyone come across a way to do this?

this seems like the wrong answer. at least as far as i can tell with android-7 platform and above, you can set the size however you want up to the full screen. of course, that's not the recommended sizes, but there's nothing technically restricting you from implementing the widget you're talking about. an issue to watch out for is that while you can supply different layouts for portrait and landscape, onUpdate won't be called on a screen rotation.

No, you can't do this. Sorry.

Related

Android: controlling widget margins

It's a bit of a frustration that as of Android 4.0, app widgets are automatically given margins between the widget frame and the app:
The space on a small phone's screen is at a premium, and the margin can represent quite a large loss, particularly when the widget is small too. Despite hours of looking, I can't see a way to override or control the widget's margins.
However, I have been playing recently with the Nova launcher, and note that it's possible to control widget margins using that launcher. What is more, although there's a global widget margin setting (something like None, Small, Medium, Large), this setting can be activated per widget.
And it's lovely to get widgets that extend from edge to edge. See, for example, the following screenshot from my meteogram app:
So, the question is... how does the Nova launcher control widget margins, and can the same method be used at the widget level, or does the control necessarily come from launcher level so that there is no hope for ever controlling widget margins unless you're a launcher developer?
Your assumptions are correct.
Widget margin control lies with launcher so there is not much you can do about it unless you build a launcher.

How can I ensure that my app is compatible with every Android device and will scale views to fit different screen dimensions?

I'm in the beginning stages of developing my first app and wanted to know what I can do from now to make sure my app runs equally well across all Android devices. I don't have access to another device right now to test whether or not it will scale but have I noticed that if I rotate my device to landscape, the items in the view (e.g. buttons, icons) don't scale at all to fit the screen. This makes me worry that it won't be very compatible with other devices.
I find myself putting items in each view by messing with paddings and margins in the XML till I have it right - but now I realise that this makes the layouts specific to my device. Is there a "correct" way of doin this? For instance, if I had to draw 4 horizontal lines equally spaced across the width of a screen how would I achieve this so that the width between the lines are determined according to the size of the screen?
I have a large image in my MainActivity but for some reason it gets really small if I switch to landscape.
Can anybody shed some light on this? Would be really grateful, thanks.
This issue is addressed here:
http://developer.android.com/guide/practices/screens_support.html

Program that has proper layout on all device android

I am currently writing a remote control program to control a robot on all android devices.
I am trying to display the layout to fill the screen fully on different sizes. My first try was on a samsung 10.1' tablet and it was working well but when I port it to smaller devices like 4.3' the layout goes wrong. I am thinking of creating several layouts to match with different screen sizes but how do I check which layout to set according to screen sizes?
I have tried getwidth and getheight but it only works after you have set the layout.
Please give me a short sample code if possible as I am very new to this.
If there are any other better ways please advice me on it.
Please note that I am using API level 8, android 2.2.
Go through this and this. Basically, you create layout for various screen, each with same name. They are put in different folders (each named according to factors like- landscape, portrait, screen density and screen size). OS will decide on it's own about which layout to use.
This is great article about that. But in overall, never expect the screen to be any static size. But if you're deciding to create layout for each size, you don't have to worry about choosing the best layout, android will do it for you if you provide multiple versions of same layout.
You do not have to check the screen dimensions. Just create your layouts, and Android will automatically pick the correct one for your screen size, orientation, API level, etc. See here for more details: http://developer.android.com/guide/practices/screens_support.html

Appwidget with square layout not showing properly in landscape mode

I have built an appwidget with an square layout, and so it doesn't fit exactly in the standard widget sizes as recommended in http://developer.android.com/guide/practices/ui_guidelines/widget_design.html#sizes.
I chose a 3x2 size (android:minWidth="220dip" android:minHeight="146dip") as it is the smalllest that covers the widget's layout.
In http://developer.android.com/guide/practices/ui_guidelines/widget_design.html#design Google recommends:
"All widgets must fit within the bounding box of one of the six supported widget sizes, or better yet, within a pair of portrait and landscape orientation sizes, so your widget looks good when the user switches screen orientations"
My widget looks good in portrait mode. When switched to landscape mode (in the emulator) the layout is clipped. I tried inverting the minWidth and minHeight values in the provider's XML and then it looked perfect in landscape mode but clipped in portrait mode. Setting the size to 3x3 solves the problem, but then the widgets takes a lot of unnecessary space.
I know I can define different layouts in res/layout and res/layout-land, but in this case the layouts are not different at all, in both modes I want the widget to look square.
What I would need is something like 'xml' and 'xml-land', AFAIK this is not supported in Android.
Ideas?
What I would need is something like 'xml' and 'xml-land', AFAIK this is not supported in Android.
It is supported. All resource set qualifiers (e.g., -land) are supported for all resource types.
Whether it will help you is another matter entirely, as I am not aware that you can change actual app widget size on the fly this way.
Setting the size to 3x3 solves the problem, but then the widgets takes a lot of unnecessary space.
You are the one who is trying to force a particular pixel size (or, at least, aspect ratio). This will be fragile, as you are discovering. Furthermore, app widget cells are not guaranteed to be the same size on all devices and home screen implementations.
Hence, you are either going to need to choose an app widget size that gives you tons of extra space (your 3x3 scenario), or design a fluid app widget layout that adapts to the actual size that you are given (and therefore will not be square). Personally, I recommend the latter.

Absolute layout uasage

Is that ok to use absolute layout in my application if i know exactly the x,y that i'll draw the widget at or it'll affect the application appearance on the device ?
I'm asking this question as I've read that it's deprecated
Even if you know exactly where you want to put each widget, you won't know the exact resolution of the devices which will run your application. Some will have empty space left on the screen, while others might not have room to display all your widgets.
Short version: better not use it, there are always better options.
In case of absolute layout, your application will adjust itself in every phn ,of any resolution or screen size. But in case of fixed coordinates may be screen size becomes a limitation.
It is a very bad practice to use absolute layout coordinates.
Don't use it.

Categories

Resources