我将这款扫雷游戏作为一个应用程序作为一个项目。我把它全部编码,所以它完美地工作,现在我想添加图像按钮,代表地雷,旗帜等。
我所做的所有研究也指出将图像作为按钮背景或使用图像按钮。当我使用这些方法中的任何一种时,它会使按钮脱离其原始比例并使其覆盖屏幕。
如何将图像设置到按钮上但不更改按钮的当前尺寸?
仅供参考:我正在使用android studio。
这是我的xml:
<TableLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.daniel.msb.Small"
android:background="#ff666666">
<TableRow
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:id="@+id/Header"
android:background="#ff898989"
android:layout_gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="0/0"
android:id="@+id/txtCount"
android:layout_weight="0.1"
android:layout_gravity="center"
android:background="#ff87141d"
android:gravity="center" />
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Small"
android:id="@+id/txtHeader"
android:layout_weight="0.5"
android:gravity="center|center_horizontal"
android:layout_gravity="center"
android:textSize="30dp" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="Flag"
android:id="@+id/chbFlag"
android:layout_gravity="center"
android:layout_weight="0.1"
android:layout_span="0"
android:layout_column="0" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/Row1">
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button1_1"
android:layout_weight="1"
android:clickable="true"
android:onClick="mineCheck"
android:longClickable="false" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button1_2"
android:onClick="mineCheck"
android:layout_weight="1"/>
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button1_3"
android:onClick="mineCheck"
android:layout_weight="1"
android:clickable="true"
android:longClickable="false" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button1_4"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button1_5"
android:onClick="mineCheck"
android:layout_weight="1" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/Row2">
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button2_1"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button2_2"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button2_3"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button2_4"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button2_5"
android:onClick="mineCheck"
android:layout_weight="1" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/Row3">
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button3_1"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button3_2"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button3_3"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button3_4"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button3_5"
android:onClick="mineCheck"
android:layout_weight="1" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/Row4">
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button4_1"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button4_2"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button4_3"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button4_4"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button4_5"
android:onClick="mineCheck"
android:layout_weight="1" />
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/Row5">
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button5_1"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button5_2"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button5_3"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button5_4"
android:onClick="mineCheck"
android:layout_weight="1" />
<Button
android:layout_width="0dip"
android:layout_height="match_parent"
android:text=""
android:id="@+id/button5_5"
android:onClick="mineCheck"
android:layout_weight="1" />
</TableRow>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Play again?"
android:id="@+id/button"
android:layout_weight="0"
android:onClick="restart" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Return to main menu"
android:id="@+id/btnReturn"
android:layout_weight="0"
android:onClick="returnToMain" />
</TableLayout>
答案 0 :(得分:1)
也许您可以调整图像大小以使其适合您的按钮大小,这样您就可以模拟“填充”效果并且不会弄乱原始大小。
答案 1 :(得分:0)
您可以尝试使用ImageView
s(see here)代替按钮,并将事件处理程序直接附加到ImageView
。
答案 2 :(得分:0)
点击此处: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
您可以通过为layout_width
,layout_height
指定一个数字,将宽度和高度设置为固定大小。
您可能希望使用sp单位,以便按钮仍会根据屏幕大小更改大小。
答案 3 :(得分:0)
实现这一目标的方法确实很多。您可以使用ImageView替换TextView并根据需要定义ScaleType。您可以在XML中定义位图并将其设置为适合您的TextView,然后将其用作背景。
还有更多方法,但最简单的方法就是替换ImageView。
答案 4 :(得分:0)
我认为你应该经历这些:
1。Android: combining text & image on a Button or ImageButton
他们已经清楚地解释了如何在按钮上使用图像。如果出现任何问题,请再次来到这里。