TableLayout和layout_weight不起作用

时间:2017-10-13 09:15:13

标签: android button tablelayout tablerow android-layout-weight

尝试使用weightSum=100android:layout_weight构建计算器视图,其中常规按钮应 25%。然而, 0位 @+id/button18按钮的大小应该是常规按钮的两倍,因此它被设置为android:layout_weight="50"但是它不占用所需的空间。为什么这样?

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
  <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">
       <TableRow
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:weightSum="100">

           <Button
               android:id="@+id/button13"
               android:layout_width="wrap_content"
               android:layout_height="74dp"
               android:layout_weight="25"
               android:background="@color/lighterGrey"
               android:text="1"
               android:textSize="30sp" />

           <Button
               android:id="@+id/button14"
               android:layout_width="wrap_content"
               android:layout_height="match_parent"
               android:layout_weight="25"
               android:background="@color/lighterGrey"
               android:text="2" />

           <Button
               android:id="@+id/button15"
               android:layout_width="wrap_content"
               android:layout_height="match_parent"
               android:layout_weight="25"
               android:background="@color/lighterGrey"
               android:text="3" />

           <Button
               android:id="@+id/button16"
               android:layout_width="wrap_content"
               android:layout_height="match_parent"
               android:layout_weight="25"
               android:background="@color/orange"
               android:text="+"
               android:textColor="@android:color/white"
               android:textSize="30sp" />
       </TableRow>

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

           <Button
               android:id="@+id/button18"
               android:layout_height="74dp"
               android:layout_weight="50"
               android:background="@color/lighterGrey"
               android:text="0" />

           <Button
               android:id="@+id/button15"
               android:layout_height="match_parent"
               android:layout_weight="25"
               android:background="@color/lighterGrey"
               android:text="." />

           <Button
               android:id="@+id/button16"
               android:layout_width="wrap_content"
               android:layout_height="match_parent"
               android:layout_weight="25"
               android:background="@color/orange"
               android:text="="
               android:textColor="@android:color/white"
               android:textSize="30sp" />
       </TableRow>

  </TableLayout>
</LinearLayout>

2 个答案:

答案 0 :(得分:2)

我想,你错过了设置 button18&amp;的宽度。 button15

package test;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

public class Login {

    public static WebDriver driver;
    public String baseUrl;

    @BeforeMethod
    public void beforeMethod() throws Exception {



        //System.setProperty("webdriver.chrome.driver", "chromedriver_win32\\chromedriver.exe");
        //driver = new ChromeDriver();

        System.setProperty("webdriver.gecko.driver", "geckodriver-v0.18.0-win64\\geckodriver.exe");
        driver = new FirefoxDriver();

        baseUrl = "https://www.google.lk/";
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    }

    @Test
    public void login() throws Exception {
        driver.get(baseUrl);
        driver.findElement(By.xpath("//input[@value='Google Search']")).click();
    }

    @AfterMethod
    public void afterMethod() {
         driver.quit();
    }

}

但是我建议您在将重量设置为宽度时使用android:layout_width="wrap_content" 而不是width="0dp"来提高准确度。

答案 1 :(得分:1)

您应该使用android:layout_width="0dp"

更改所有Button的宽度android:layout_width="0dp"

试试这个。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

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

            <Button
                android:id="@+id/button13"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/lighterGrey"
                android:text="1"
                android:textSize="30sp"/>

            <Button
                android:id="@+id/button14"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/lighterGrey"
                android:text="2"/>

            <Button
                android:id="@+id/button15"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/lighterGrey"
                android:text="3"/>

            <Button
                android:id="@+id/button16"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/orange"
                android:text="+"
                android:textColor="@android:color/white"
                android:textSize="30sp"/>
        </TableRow>

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

            <Button
                android:id="@+id/button18"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="50"
                android:background="@color/lighterGrey"
                android:text="0"/>

            <Button
                android:id="@+id/button1"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/lighterGrey"
                android:text="."/>

            <Button
                android:id="@+id/button2"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="25"
                android:background="@color/orange"
                android:text="="
                android:textColor="@android:color/white"
                android:textSize="30sp"/>
        </TableRow>
    </TableLayout>
</LinearLayout>

<强>输出

enter image description here