【问题标题】:Button is not a square but width and height are the same in Android studio?按钮不是正方形但Android Studio中的宽度和高度相同?
【发布时间】:2019-12-06 17:10:32
【问题描述】:

我是 Android 编程新手。我正在尝试创建一个简单的井字游戏,但我现在正在努力解决按钮大小问题。我的按钮具有相同的高度和长度,但它们的宽度大于高度。谁能给我一个提示?

这是来自 activity_main.xml 的代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:background="#2190F3"
android:orientation="vertical" >


<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="20dp"
    android:textSize="40sp"
    android:textStyle="bold"
    android:textColor="#000000"
    android:text="@string/title" />

<LinearLayout
    android:layout_marginTop="150dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <Button
        android:id="@+id/button3"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:text="Button" />

    <Button
        android:id="@+id/button"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:text="Button" />
</LinearLayout>

</LinearLayout>

【问题讨论】:

    标签: java android xml android-studio


    【解决方案1】:

    或者,将包含按钮的LinearLayout 中的layout_width 设置为wrap_content 而不是match_parent。检查以下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:background="#2190F3"
        android:orientation="vertical" >
    
    
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="20dp"
            android:textSize="40sp"
            android:textStyle="bold"
            android:textColor="#000000"
            android:text="title" />
    
        <LinearLayout
            android:layout_marginTop="150dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:orientation="horizontal">
    
            <Button
                android:id="@+id/button3"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_weight="1"
                android:text="Button" />
    
            <Button
                android:id="@+id/button"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_weight="1"
                android:text="Button" />
    
            <Button
                android:id="@+id/button2"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_weight="1"
                android:text="Button" />
        </LinearLayout>
    
    </LinearLayout>
    

    从您的按钮中删除 layout_weight="1"。检查以下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:background="#2190F3"
        android:orientation="vertical" >
    
    
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="20dp"
            android:textSize="40sp"
            android:textStyle="bold"
            android:textColor="#000000"
            android:text="title" />
    
        <LinearLayout
            android:layout_marginTop="150dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"
            android:orientation="horizontal">
    
            <Button
                android:id="@+id/button3"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:text="Button" />
    
            <Button
                android:id="@+id/button"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:text="Button" />
    
            <Button
                android:id="@+id/button2"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:text="Button" />
        </LinearLayout>
    
    </LinearLayout>
    

    【讨论】:

    • 谢谢,它有效!但为什么?你能解释一下吗?
    • 根据您的要求,您不能同时使用match_parent android:layout_weight="1"。当您使用layout_weight 为 1 时,这意味着您已经覆盖了其父级的所有宽度。您可以通过从初始布局中的一个按钮中删除 android:layout_weight="1" 来检查差异
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    • 1970-01-01
    • 2017-03-31
    相关资源
    最近更新 更多