Table 带按钮的布局 - 第一个按钮 (1x1) 的背景尺寸在屏幕上与其他按钮不同(所有按钮都使用相同的图像)
Table layout with buttons - Background size of 1st button(1x1) is appearing different in screen than other buttons (using same image for all)
我正在使用 table 按钮布局创建数字键盘,如附图所示,并使用 selector.xml
在按钮聚焦或 pressed.The 第一个按钮时设置不同的背景正在使用默认焦点,第一个按钮(图 1)的背景图像大小比其他按钮(图 2)相对更大,尽管我对 [=41= 中的所有按钮使用相同的 selector.xml
] 布局。
从逻辑上讲,所有按钮都应具有与我使用的相同 selector.xml
相同的背景图像。我花了很多时间来确定它的原因,但没有运气。
我试过将不同的图像保留为背景,即使发生了同样的情况。我尝试增加 table 布局行和列,即使第一个按钮的 background-size 不同。
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
非常感谢您的帮助。
希望您能从我的描述中理解问题所在。如果不是请在评论中告诉我,我可以提供更多详细信息。
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
我正在使用 table 按钮布局创建数字键盘,如附图所示,并使用 selector.xml
在按钮聚焦或 pressed.The 第一个按钮时设置不同的背景正在使用默认焦点,第一个按钮(图 1)的背景图像大小比其他按钮(图 2)相对更大,尽管我对 [=41= 中的所有按钮使用相同的 selector.xml
] 布局。
从逻辑上讲,所有按钮都应具有与我使用的相同 selector.xml
相同的背景图像。我花了很多时间来确定它的原因,但没有运气。
我试过将不同的图像保留为背景,即使发生了同样的情况。我尝试增加 table 布局行和列,即使第一个按钮的 background-size 不同。
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
非常感谢您的帮助。
希望您能从我的描述中理解问题所在。如果不是请在评论中告诉我,我可以提供更多详细信息。
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