You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Hangman游戏布局问题:如何让字母按钮适配两行显示并解决按钮无法收缩问题?

解决Hangman游戏字母按钮的布局收缩问题

嘿,我看了你的布局代码,知道为啥按钮没法收缩成两行适配屏幕了!问题主要出在TableLayout、TableRow的宽度设置和按钮的权重配置上,咱们一步步来改:

核心问题分析

  • 你的TableLayout设置了android:layout_width="wrap_content",这会让它只包裹所有按钮的总宽度,不会主动适配屏幕宽度,导致按钮没法收缩。
  • 每个TableRow的宽度也没铺满父容器,按钮自然没法平分空间。
  • 按钮样式里只有wrap_content宽度,没有设置权重,系统不知道怎么分配可用空间给每个按钮。

修改方案

1. 调整TableLayout和TableRow的宽度

把TableLayout的android:layout_width改成match_parent,让它占满父容器的宽度;同时把每个TableRow的android:layout_width也改成match_parent,确保行能铺满整个TableLayout。

2. 修改按钮样式,添加权重

在StilePulsanti样式里,把android:layout_width改成0dp,并添加android:layout_weight="1"。这样每个按钮会平分所在行的可用宽度,自动收缩适配屏幕。

修改后的代码

更新后的activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:orientation="vertical"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:paddingLeft="16dp"
        android:paddingRight="16dp">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/hm1" />

        <TextView
            android:id="@+id/textView1"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="#######" />

        <TextView
            android:id="@+id/textView2"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView" />

        <TableLayout
            android:id="@+id/table"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <Button
                    android:id="@+id/A"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="A"/>
                <Button
                    android:id="@+id/B"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="B"/>
                <Button
                    android:id="@+id/C"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="C"/>
                <Button
                    android:id="@+id/D"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="D"
                    app:iconPadding="6dp"/>
                <Button
                    android:id="@+id/E"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="E"/>
                <Button
                    android:id="@+id/F"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="F"/>
                <Button
                    android:id="@+id/G"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="G"/>
                <Button
                    android:id="@+id/H"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="H"/>
                <Button
                    android:id="@+id/J"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="J"/>
                <Button
                    android:id="@+id/K"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="K"/>
                <Button
                    android:id="@+id/L"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="L"/>
                <Button
                    android:id="@+id/M"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="M"/>
            </TableRow>

            <TableRow
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <Button
                    android:id="@+id/N"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="N"/>
                <Button
                    android:id="@+id/O"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="O"/>
                <Button
                    android:id="@+id/P"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="P"/>
                <Button
                    android:id="@+id/Q"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="Q"/>
                <Button
                    android:id="@+id/R"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="R"/>
                <Button
                    android:id="@+id/S"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="S"/>
                <Button
                    android:id="@+id/T"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="T"/>
                <Button
                    android:id="@+id/U"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="U"/>
                <Button
                    android:id="@+id/V"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="V"/>
                <Button
                    android:id="@+id/W"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="W"/>
                <Button
                    android:id="@+id/X"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="X"/>
                <Button
                    android:id="@+id/Y"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="Y"/>
                <Button
                    android:id="@+id/Z"
                    style="@style/StilePulsanti"
                    android:onClick="premuto"
                    android:text="Z"/>
            </TableRow>
        </TableLayout>
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

更新后的StilePulsanti样式

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="StilePulsanti">
        <item name="android:gravity">center_vertical|center_horizontal</item>
        <item name="android:layout_width">0dp</item>
        <item name="android:layout_weight">1</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textSize">15sp</item>
        <item name="android:background">#54AEDB</item>
        <item name="android:clickable">true</item>
        <item name="android:layout_margin">2dp</item>
    </style>
</resources>

额外小提示

  • 字体大小建议用sp而不是dp,这样能适配系统的字体缩放设置,提升 accessibility。
  • 我帮你把第一个TableRow里的H按钮的text从"I"改回"H"了,应该是你之前的笔误😉

这样修改后,两行字母按钮就会自动平分屏幕宽度,完美收缩成两行显示啦!

内容的提问来源于stack exchange,提问作者ric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 10:37:37