Макет таблицы с кнопками - размер фона 1-й кнопки (1x1) на экране выглядит иначе, чем у других кнопок (для всех используется одно и то же изображение) - PullRequest
0 голосов
/ 07 января 2019

Я создаю числовую панель, используя макет таблицы с кнопками, как показано на прикрепленных изображениях, и использую selector.xml для установки другого фона, когда кнопки находятся в фокусе или нажаты. Первая кнопка получает фокус по умолчанию, размер фонового изображения первой кнопки (изображение 1) сравнительно больше, чем другие кнопки (изображение 2), хотя я использую один и тот же selector.xml для всех кнопок в макете таблицы. Логически все кнопки должны иметь одинаковое фоновое изображение, как я использую один и тот же selector.xml. Я потратил довольно много времени на выявление причины этого, но не повезло.

Я пытался сохранить другое изображение в качестве фона даже тогда, когда происходило то же самое. Я попытался увеличить строки и столбцы макета таблицы, даже тогда размер фона первой кнопки отличается.

https://i.stack.imgur.com/ASr87.png

https://i.stack.imgur.com/ZmGCD.png

Selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/unfocused_button" android:state_pressed="true"></item>
    <item android:drawable="@drawable/focused_button" android:state_focused="true"></item>
</selector>

Файл ресурсов

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/numericPad"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"
                    android:layout_centerHorizontal="true"
                    android:layout_marginLeft="25dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginTop="10dp">
                    <!--android:shrinkColumns="*"
                    android:stretchColumns="*"-->
                    <TableRow
                        android:id="@+id/tableRow1"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content">

                        <Button
                            android:id="@+id/button1"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:background="@drawable/number_button_selector"
                            android:gravity="center"
                            android:nextFocusLeft="@id/button1"
                            android:text="1"
                            android:textAppearance="?android:attr/textAppearanceListItemSmall"
                            android:textColor="#ffffff"
                            android:textSize="20dp"></Button>

                        <Button
                            android:id="@+id/button2"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:background="@drawable/number_button_selector"
                            android:gravity="center"
                            android:text="2"
                            android:textAppearance="?android:attr/textAppearanceListItemSmall"
                            android:textColor="#ffffff"
                            android:textSize="20dp"></Button>

                        <Button
                            android:id="@+id/button3"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:background="@drawable/number_button_selector"
                            android:gravity="center"
                            android:text="3"
                            android:textAppearance="?android:attr/textAppearanceListItemSmall"
                            android:textColor="#ffffff"
                            android:textSize="20dp"></Button>

                        <Button
                            android:id="@+id/button4"
                            android:layout_width="0dp"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:background="@drawable/number_button_selector"
                            android:gravity="center"
                            android:nextFocusRight="@id/button4"
                            android:text="4"
                            android:textAppearance="?android:attr/textAppearanceListItemSmall"
                            android:textColor="#ffffff"
                            android:textSize="20dp"></Button>
                    </TableRow>

                    ....Similar code for row 2 and row 3

Благодарим Вас за помощь.

Надеюсь, вы можете понять проблему из моего описания. Если нет, пожалуйста, дайте мне знать в комментариях, я могу дать дополнительную информацию.

1 Ответ

0 голосов
/ 09 января 2019
I have solved this issue by keeping a constant height value for all the buttons rather than 'wrap_content'. Now all the button's background are of same.
Thanks for those who have viewed and tried solution for it.
Updated Code:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/numericPad"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentBottom="true"`enter code here`
                    android:layout_centerHorizontal="true"
                    android:layout_marginLeft="25dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginTop="10dp">
                    <!--android:shrinkColumns="*"
                    android:stretchColumns="*"-->
                    <TableRow
                        android:id="@+id/tableRow1"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content">

                        <Button
                            android:id="@+id/button1"
                            android:layout_width="0dp"
                            android:layout_height="48dp"
                            android:layout_weight="1"
                            android:alpha="1"
                            android:background="@drawable/number_button_selector"
                            android:gravity="center"
                            android:nextFocusLeft="@id/button1"
                            android:text="1"
                            android:textAppearance="?android:attr/textAppearanceListItemSmall"
                            android:textColor="#ffffff"
                            android:textSize="20dp"></Button>

                        <Button
                            android:id="@+id/button2"
                            android:layout_width="0dp"
                            android:layout_height="48dp"
                            android:layout_weight="1"
                            android:background="@drawable/number_button_selector"
                            android:gravity="center"
                            android:text="2"
                            android:textAppearance="?android:attr/textAppearanceListItemSmall"
                            android:textColor="#ffffff"
                            android:textSize="20dp"></Button>

                        <Button
                            android:id="@+id/button3"
                            android:layout_width="0dp"
                            android:layout_height="48dp"
                            android:layout_weight="1"
                            android:background="@drawable/number_button_selector"
                            android:gravity="center"
                            android:text="3"
                            android:textAppearance="?android:attr/textAppearanceListItemSmall"
                            android:textColor="#ffffff"
                            android:textSize="20dp"></Button>

                        <Button
                            android:id="@+id/button4"
                            android:layout_width="0dp"
                            android:layout_height="48dp"
                            android:layout_weight="1"
                            android:background="@drawable/number_button_selector"
                            android:gravity="center"
                            android:nextFocusRight="@id/button4"
                            android:text="4"
                            android:textAppearance="?android:attr/textAppearanceListItemSmall"
                            android:textColor="#ffffff"
                            android:textSize="20dp"></Button>
                    </TableRow>

[Button 1 with background][1]


[Button 2 with background][2]


  [1]: https://i.stack.imgur.com/XQaBg.png
  [2]: https://i.stack.imgur.com/YRN6E.png
...