Reputation: 4247
I have an issue where I had to make 4 linear layouts and put 4 buttons in each. I need those buttons to be the same sizes, but once they are pressed, they should change image.
I have 2 button icons of the absolutely same size 120x120. But, when I press on any of them, they suddenly change size comparing to other buttons.
Before click: Layout before clicking and changing icon
After click: Layout after click
You can see how the green buttons are slightly bigger than the white ones. I need to stop that size changing.
Also, I noticed that the weight of my buttons changes from 1 to 0.92 (for the white buttons). Is there a way to stop this weight change?
Also, here is my XML
<LinearLayout
android:id="@+id/iceland_memory_game"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="2"
android:baselineAligned="false"
android:orientation="horizontal"
android:weightSum="4" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="4" >
<Button
android:id="@+id/btn11"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn21"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn31"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn41"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="4" >
<Button
android:id="@+id/btn12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn22"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="0.92"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn32"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn42"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="4" >
<Button
android:id="@+id/btn13"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn23"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn33"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn43"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="4" >
<Button
android:id="@+id/btn14"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn24"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn34"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn44"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
</LinearLayout>
</LinearLayout>
Upvotes: 0
Views: 77
Reputation: 24848
// try this way,hope this will help you...
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/iceland_memory_game"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/btn1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn4"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/btn5"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn6"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn7"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn8"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/btn9"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn10"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn11"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn12"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:id="@+id/btn13"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn14"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn15"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
<Button
android:id="@+id/btn16"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="5dp"
android:layout_weight="1"
android:background="@drawable/white_button" />
</LinearLayout>
</LinearLayout>
Upvotes: 1
Reputation: 1420
In addition to Der Golem's answer, i think it should be android:layout_height="0dp"
for buttons and android:layout_width="0dp"
for layouts..because parent layout is having horizontal orientation and child linear layouts having vertical orientation..
Upvotes: 2
Reputation: 38098
The weighted dimension must be 0dp, not wrap_content.
This is how weights work.
And I'd remove the optional weightSum attribute, since Android calculates it by itself.
[EDIT]
Since it only works 1 dimension at a time, this is why it's called "nested" weights.
So, for Buttons, set
android:layout_width="0dp"
and for LinearLayouts, set
android:layout_height="0dp"
Upvotes: 1