How can I set a fixed width for an Android button? Everytime I try to set a fixed width it fills the current parent (the RelativeView). Here is my XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/relativelayout" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<EditText android:layout_height="wrap_content" android:editable="false" android:layout_width="fill_parent" android:id="@+id/output"></EditText>
<Button android:layout_height="wrap_content" android:id="@+id/Button01" android:layout_below="@id/output" android:text="7" android:layout_width="wrap_content"></Button>
<Button android:layout_below="@id/output" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button02" android:layout_toRightOf="@+id/Button01" android:text="8"></Button>
<Button android:layout_below="@id/output" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button03" android:layout_toRightOf="@+id/Button02" android:text="9"></Button>
</RelativeLayout>
How would I give it a FIXED width?
UPDATE
Say I have several buttons that I want the same size as each other and 1/3 of the entire view (Portrait), then I want a button with double the width. Then a button with double the height. How could I accomplish this other that manually sizing them?
Instead of
android:layout_width="wrap_content"
you can use a fixed pixelsize like for exampleandroid:layout_width="20px"
or a better way:android:layout_width="20dp"
you can also set the width programatically in the code:
Button.setWidth(int width)
Concerning your update:
I don't know if it is a good solution, but i works. You could use
to read the screen resolution and then set the button sizes according to metrics.widthPixel and metrics.heightPixel
The best and easiest way to set a button dynamically is
The height and width in pixels px. 45 being the height in dp and 42 being the width in dp.
So, for example, if you've placed your button within a TableRow within a TableLayout, you should have it as TableRow.LayoutParams
add
android:minwidth
line in that code.Use minWidth and minHeight to set the width and height of a button.
To accomplish what you want, you can use a LinearLayout with a weightsum. For example, you can put a WeightSum of 9. If you put the weight of three button inside to 1 each. They will take 1/3 of the place, and you can put 2 for another object. This object will be twice as big as the other.
http://developer.android.com/reference/android/widget/LinearLayout.html#setWeightSum(float)
Edit: I would like to add that for this to work correctly, you have to set the width or height to 0px (depending on if it's an horizontal or a vertical layout).