3

I have a big tablelayout with 28 buttons. (Making a calculator) Anyway when one of these buttons gets clicked the gravity of that button and even some buttons in the same row changes so that the text is aligned to the left end.

I have no idea and it´s starting to make me a bit crazy.

Here´s the layout.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/TableLayout1"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginBottom="10dp"
    android:background="#DDD"
    android:orientation="vertical" >

    <ScrollView
        android:background="#DDD"
        android:id="@+id/scrollView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <RelativeLayout
            android:id="@+id/RelativeLayout1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textViewInput"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="#000" />

            <TextView
                android:id="@+id/textViewResult"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:layout_marginRight="5dp"
                android:gravity="right"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="#000" />

        </RelativeLayout>
    </ScrollView>
</LinearLayout>

<TableLayout
    android:id="@+id/TableLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" >

    <TableRow
        android:id="@+id/TableRow07"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:gravity="center_vertical"
        android:weightSum="5" >

        <Button
            android:id="@+id/Button06"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_root"
            android:textColor="@android:color/primary_text_light"
            android:gravity="center" />

        <Button
            android:id="@+id/bAsin"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:textColor="@android:color/primary_text_light"
            android:gravity="center" />

        <Button
            android:id="@+id/bAcos"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2" 
            android:gravity="center"/>

        <Button
            android:id="@+id/batan"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.4"
            android:gravity="center" />
    </TableRow>

    <TableRow
        android:id="@+id/TableRow06"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:weightSum="5" >

        <Button
            android:id="@+id/Button04"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_pi"
            android:textColor="@android:color/primary_text_light"
            android:gravity="center" />

        <Button
            android:id="@+id/Button03"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:text="@string/_sin"
            android:textColor="@android:color/primary_text_light" 
            android:gravity="center"/>

        <Button
            android:id="@+id/Button02"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_cos"
            android:gravity="center" />

        <Button
            android:id="@+id/Button01"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.4"
            android:text="@string/_tan" 
            android:gravity="center"/>
    </TableRow>

    <TableRow
        android:id="@+id/TableRow05"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:weightSum="5" >

        <Button
            android:id="@+id/bPow"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_pow"
            android:textColor="@android:color/primary_text_light" 
            android:gravity="center"/>

        <Button
            android:id="@+id/blpar"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:text="@string/_lpar"
            android:textColor="@android:color/primary_text_light" 
            android:gravity="center"/>

        <Button
            android:id="@+id/brpar"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_rpar"
            android:gravity="center" />

        <Button
            android:id="@+id/bdiv"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.4"
            android:text="@string/_div"
            android:gravity="center" />
    </TableRow>

    <TableRow
        android:id="@+id/TableRow04"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:weightSum="5" >

        <Button
            android:id="@+id/b7"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_7"
            android:textColor="@android:color/primary_text_light" 
            android:gravity="center"/>

        <Button
            android:id="@+id/b8"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:text="@string/_8"
            android:textColor="@android:color/primary_text_light" 
            android:gravity="center"/>

        <Button
            android:id="@+id/b9"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_9"
            android:gravity="center" />

        <Button
            android:id="@+id/bmul"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.4"
            android:text="@string/_times"
            android:textStyle="bold"
            android:gravity="center" />
    </TableRow>

    <TableRow
        android:id="@+id/TableRow03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:weightSum="5" >

        <Button
            android:id="@+id/b4"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_4"
            android:textColor="@android:color/primary_text_light"
            android:gravity="center" />

        <Button
            android:id="@+id/b5"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:text="@string/_5"
            android:textColor="@android:color/primary_text_light"
            android:gravity="center" />

        <Button
            android:id="@+id/b6"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_6"
            android:gravity="center" />

        <Button
            android:id="@+id/bsub"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.4"
            android:text="@string/_minus" 
            android:gravity="center"/>
    </TableRow>

    <TableRow
        android:id="@+id/TableRow02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:weightSum="5" >

        <Button
            android:id="@+id/b1"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_1"
            android:textColor="@android:color/primary_text_light" 
            android:gravity="center"/>

        <Button
            android:id="@+id/b2"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:text="@string/_2"
            android:textColor="@android:color/primary_text_light"
            android:gravity="center" />

        <Button
            android:id="@+id/b3"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_3" 
            android:gravity="center"/>

        <Button
            android:id="@+id/badd"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.4"
            android:text="@string/_plus" 
            android:gravity="center"/>
    </TableRow>

    <TableRow
        android:id="@+id/TableRow01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:weightSum="5" >

        <Button
            android:id="@+id/b0"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:text="@string/_0"
            android:textColor="@android:color/primary_text_light" 
            android:gravity="center"/>

        <Button
            android:id="@+id/bPoint"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:gravity="center"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:text="@string/dot"
            android:textColor="@android:color/primary_text_light" />

        <Button
            android:id="@+id/bClear"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.2"
            android:gravity="center"
            android:text="@string/clear" />

        <Button
            android:id="@+id/bEnter"
            style="@style/white_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:layout_weight="1.4"
            android:text="@string/enter" />

        </TableRow>

    </TableLayout>
</RelativeLayout>

Anyone got any idea of whats wrong? I´m not touching the buttons through code, just checking the id to know which button was clicked. Nothing more, not changing gravity there or anything.

EDIT

oh yeah right, i forgot the white style. I´m pretty sure thats not it since i trie I dont know why it´s behaving like this.

    <?xml version="1.0" encoding="utf-8"?>    
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true" >
    <shape android:shape="rectangle">
        <corners android:radius="0dp"/>
        <gradient android:startColor="#a8a8a8" android:endColor="#c8c8c8" android:angle="270"></gradient>
    </shape>
</item>

<item android:state_focused="true" >
    <shape>
        <solid android:color="#DDDDDD" />
     </shape>
 </item>



    <item>
        <shape android:shape="rectangle" >
        <corners android:radius="0dp"/>
        <solid android:color="#c8c8c8"/>
        </shape>
     </item>
</selector>
4

1 回答 1

1

我知道我迟到了 5 年,但这仍然是一个相当莫名其妙的错误,即使在奥利奥。

对我来说,它有时只会发生(我有另一个应用程序在“片段 A 和片段 B 在同一屏幕情况下并排”中具有完全相同的布局,这不是问题)。

当我将表格布局放到单个屏幕上并单击按钮(更新TextView表格上方的 a)时,按钮的重力会自行改变并且不会变回。

我的解决方案(这绝对是一个 hack,但它有效),是将a包装TableLayout在 a 中FrameLayout,然后TextView我在它自己的FrameLayout. 这必须强制 Android 跳过重新布局表的尝试,因为它们是独立的帧。

于 2018-04-03T17:33:34.450 回答