按钮上的图像和保持按钮的比例?

时间:2015-06-30 14:01:17

标签: android

我将这款扫雷游戏作为一个应用程序作为一个项目。我把它全部编码,所以它完美地工作,现在我想添加图像按钮,代表地雷,旗帜等。

我所做的所有研究也指出将图像作为按钮背景或使用图像按钮。当我使用这些方法中的任何一种时,它会使按钮脱离其原始比例并使其覆盖屏幕。

如何将图像设置到按钮上但不更改按钮的当前尺寸?

仅供参考:我正在使用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>

5 个答案:

答案 0 :(得分:1)

也许您可以调整图像大小以使其适合您的按钮大小,这样您就可以模拟“填充”效果并且不会弄乱原始大小。

Here some info

答案 1 :(得分:0)

您可以尝试使用ImageView s(see here)代替按钮,并将事件处理程序直接附加到ImageView

答案 2 :(得分:0)

点击此处: http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

您可以通过为layout_widthlayout_height指定一个数字,将宽度和高度设置为固定大小。

您可能希望使用sp单位,以便按钮仍会根据屏幕大小更改大小。

答案 3 :(得分:0)

实现这一目标的方法确实很多。您可以使用ImageView替换TextView并根据需要定义ScaleType。您可以在XML中定义位图并将其设置为适合您的TextView,然后将其用作背景。

还有更多方法,但最简单的方法就是替换ImageView。

答案 4 :(得分:0)

我认为你应该经历这些:

1。Android: combining text & image on a Button or ImageButton

2。Android image button

他们已经清楚地解释了如何在按钮上使用图像。如果出现任何问题,请再次来到这里。