Centering labels below buttons and the same spaces between buttons - android

I want to set layout in android as described here:
but I can only do it this way but it is not good enough:
Any ideas? Thanks...

I think there is no good way to achieve what you want it only depend on your needs and constraints
For example if you have only three buttons so you can use a LinearLayout with an horizontal orientation and a weightSum of 90% with a centered gravity and you give each componnent a weight of 30% (eg. LinearLayout with vertical orientation) and after that you will have a dynamic height unless you constrain the label into single line or you can even marquee them

Related

Android sudokod layout

I want to develop a simple sudoku app. For the layout, I need to have a 9x9 table/grid for the board, and 12 buttons under it and all this must fit in one screen,i had a couple of ideas but there is a problem in each of them
Using GridView and pass a 2d array to the adapter, BUT, the grid is scrollable and the player must see the whole board.
Using TableView, but its not clickable as the grid.
Create 81 button for the board in the xml or programmatically, I think it will be complex.
Is there are any other simpler or more efficient ideas! And if not , which one from the above is better.
There's an option for getting this done using weighted width and height. As far as I know this feature is only available in LinearLayouts.
The main idea I've just explained in this answer.
Please first off read the answer I linked to and then you could use the following approach to laying out your buttons.
Declare a main vertical LinearLayout and set its width and height to match_parent.
Add 9 horizontal LinearLayouts while their width is set to match_parent and their height set to 0dp with layout_weigth equal to 1.
Add 9 buttons (i.e. your cells) to each LinearLayout while their width is set to 0dp and layout_weight set to 1 and their height is set to match_parent.

Aligning in a grid

I'm developing an android calendar app so I need to align the days in a grid-like style. I'm using the API Level 8 so I need to align them by margins. But when switching to Bigger screens the numbers get to the left of screen and do not cover the whole screen.(I know that is because I use dp as a unit for my margin-left). Is there something like CSS % (percent) in Android Layouts?
Try this
android:layout_weight="1"
on each element in that section. It should space evenly.
It's weight attribute for views inside LinearLayout. Here is a good explanation what it means. But you can use it only to set view sizes, not margins. However you can put your view into RelativeLayout, place this layouts to take all available screen width and set attribute centerInParent=true in your view.

Android layout- relative vs frame

I have an application where I want to achieve a layout where the product image will be in the background and top of that to the right bottom, I want to place the price of the product and to the left bottom I want to place an add button.
Should I use frame layout or relative layout ???
As a practical rule, I think it's up to you. I personally tend to use RelativeLayouts because they're more flexible, but you can achieve the same effect with either.
This SO post explains the performance differences between the two layouts in more detail: FrameLayout vs RelativeLayout for overlays
Relative layout: When you have relation between siblings or parent.
Frame layout: When siblings are placed independent of each other and are only dependent on parent.
Based on your situation, you can opt in of any of these.
My advice, If you have specific size for your background for each device, then go for relative layout, and set the background to your image. Because when using background in RelativeLayout, It'll fit the size of the relative layout itself, whether the image suits the size of the RelativeLayout or not. (Can be stretched/pixelated/Not properly added)
If you're not sure about specific size, you should use FrameLayout, with ImageView, that handles the ScaleType, which can be centerCrop, and it'll fit the layout in good shape.
And for the TextView, use layout_gravity, which will handle the position based on the parent layout.

Android: Layout views of the same size evenly

I'm trying to layout a set of horizontal and vertical buttons. The problem is that if I indicate 'layout_weight' for buttons, their dimensions don't follow the 'layout_width' & 'layout_height' tags.
Here's what I'm trying to achieve
So, buttons must have identical height & width and distribute evenly horizontally and vertically.
Can anyone suggest a solution please?
Thanks
UPDATE: After a lot of investigation and trying out different solutions, I came to a conclusion that my only option is to create my own custom layout and place buttons correctly there.
That configuration (the L shape) might make this a tad trickier... since the corner button might size like it's horizontal counterparts or it's vertical counterparts, depending on which linear layout they are apart of. In any event, you should be using wrap_content for the height or width, and they should all have a weight of 1. It's my understanding that the wrap_content for the height or width is important for the Linear Layout to size them correctly. It might work with fill_parent when the weights are all 1, but if you use different weights on different Views with fill_parent, things won't appear as you expect.
If you can't make it work with linearlayout and weights (which you should be able to do), you could always try to do some manual workarounds using relativelayout.

Layout buttons so each divides up the space equally

Im using a LinearLayout to put two buttons horizontally side-by-side, but I want to each button to size itself to use 50% of the horizontal space. I thought layout_weight of "1" for each button would do the trick, but maybe my layout_width needs to be changed?
The layout_weight attribute controls how much of the left over space each of your buttons is given. If your buttons take up different amounts of space to start with, then each of them will first be given the space they ask for, and then any remaining space will be divided up between them, meaning that you won't have an exact 50/50 split.
You can get around this behaviour by first setting layout_width="0px" (keeping your layout_weights as they are), and relying on 50% being enough space to display each button.
I would set the layout_width of each button to 0px, then use the layout_weight=1 trick you mentioned.

Categories

Resources