Search code examples
androidandroid-studiobuttonlayoutandroid-linearlayout

Buttons are not the same width


Well, to be quick, I need to make simple calculator and I can't make them the same size. Android studio shows me that buttons should be centered with the same size, but when I try to run it on my phone this happens.Phone screenshot Where Android Studio shows me this: Android studio screenshot

There's code

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:screenOrientation="portrait"
    tools:context="com.example.kuba1.kalkulator.MainActivity"
    android:orientation="vertical">

<TextView
    android:layout_width="fill_parent"
    android:layout_height="82dp"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="0"
    android:id="@+id/textView"
    android:numeric="signed"
    android:padding="10dp"
    android:textAlignment="viewEnd" />

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="HEX"
            android:onClick="hex"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="DEC"
            android:id="@+id/button2"
            android:onClick="dec"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="OCT"
            android:id="@+id/button3"
            android:onClick="oct"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="BIN"
            android:id="@+id/button4"
            android:onClick="bin" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="sqrt"
            android:id="@+id/button5"
            android:onClick="sqrt"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="sin"
            android:id="@+id/button9"
            android:onClick="sin"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="cos"
            android:id="@+id/button13"
            android:onClick="cos"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="tan"
            android:id="@+id/button17"
            android:onClick="tan"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="7"
            android:id="@+id/button6"
            android:onClick="siedem"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="8"
            android:id="@+id/button10"
            android:onClick="osiem"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="9"
            android:id="@+id/button14"
            android:onClick="dziewiec"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="/"
            android:id="@+id/button18"
            android:onClick="dziel"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="4"
            android:id="@+id/button7"
            android:onClick="cztery"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="5"
            android:id="@+id/button11"
            android:onClick="piec"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="6"
            android:id="@+id/button15"
            android:onClick="szesc"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="*"
            android:id="@+id/button19"
            android:onClick="mnoz"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="3"
            android:id="@+id/button16"
            android:onClick="trzy"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1"
            android:id="@+id/button8"
            android:onClick="jeden"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="2"
            android:id="@+id/button12"
            android:onClick="dwa"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="-"
            android:id="@+id/button20"
            android:onClick="minus"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=","
            android:id="@+id/button22"
            android:onClick="przecinek" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="0"
            android:id="@+id/button23"
            android:onClick="zero" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="="
            android:id="@+id/button24"
            android:onClick="rowna" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="+"
            android:id="@+id/button25"
            android:onClick="plus" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Reset"
            android:id="@+id/button21"
            android:onClick="reset" />
    </LinearLayout>

</LinearLayout>

If something is unclear, just let me know, this is my first post on this site :P


Solution

  • Welcome to Stack Overflow.

    The Android Studio is showing layout calculated for one specific screen (Nexus 4 by default). There are many various screen with different resoultions and sizes, so they don't match with your phone.

    You can use layout_weight property inisde LinearLayout. If you make all 4 items with same weigth (let's say 1), they will all take same amount of space.