不能垂直居中按钮

时间:2015-09-27 17:57:06

标签: android

我有2个按钮和一个水平线性布局内的TextView。所有三个视图都有权重。我没有成功地将两个按钮垂直居中。

我试过了:

android:layout_gravity="center"

android:gravity="center"

线性布局

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="#707070"
    >

    <Button
        android:id="@+id/ratioLBButton"
        android:text="LB"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:onClick="ratioLBFunction"
        />

    <Button
        android:id="@+id/ratioKGButton"
        android:text="KG"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:onClick="ratioKGFunction"
        />

    <TextView
        android:text="Hello World"
        android:textSize="18sp"
        android:gravity="center"
        android:id="@+id/ratioOutput"
        android:background="#707070"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="5"
        />

</LinearLayout> 

这是包含上述视图的父级布局。

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:background="#989898"
>

这是我平板电脑的截图。它在我的Android手机上完全相同。

enter image description here

4 个答案:

答案 0 :(得分:1)

如果您使用weight,那么您需要将android:weightSum="10"添加到父级,这将有助于父级知道应为每个父级分配的空间百分比。权重总和可以是价值。也应该是父母的所有孩子。使用android:layout_centerInParent="true"也可以使所有孩子android:layout_width="fill_parent"

类似的东西:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="7">


<Button
    android:id="@+id/ratioLBButton"
    android:text="LB"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:onClick="ratioLBFunction"
    />

<Button
    android:id="@+id/ratioKGButton"
    android:text="KG"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:onClick="ratioKGFunction"
    />

<TextView
    android:text="Hello World"
    android:textSize="18sp"
    android:gravity="center"
    android:id="@+id/ratioOutput"
    android:background="#707070"
     android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="5"
    />

每个儿童体重的总和必须等于父母的weightSum。 注意:较小的值将占用更多空间

答案 1 :(得分:0)

这可能是一个愚蠢的答案。但是你在xmlns:android="http://schemas.android.com/apk/res/android"首发代码中添加了<LinearLayout .....>了吗?如果没有,请添加它。你的xml运行正常,我无法重现这个问题。

答案 2 :(得分:0)

我认为您的答案取决于android:layout_weightandroid:weightSum属性。父级和子级布局。这意味着,如果您有3个内容为layout_weight="1"的观看次数,那么您父母的观看次数应为android:weightSum="3",如下所示:

注意行:6

<?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="wrap_content"
    android:weightSum="3"
    android:background="#707070"
    android:orientation="horizontal">

    <Button
        android:id="@+id/ratioLBButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:onClick="ratioLBFunction"
        android:text="LB" />

    <Button
        android:id="@+id/ratioKGButton"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:onClick="ratioKGFunction"
        android:text="KG" />

    <TextView
        android:id="@+id/ratioOutput"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:background="#707070"
        android:gravity="center"
        android:text="Hello World"
        android:textSize="18sp" />

</LinearLayout>

我的预览:

enter image description here

答案 3 :(得分:0)

积极的:我想出来了

否定:我不想做修复

Is there a way to completely eliminate padding in a LinearLayout containing buttons?

基本上按钮底部有额外的填充。它有点像强迫症。我只想让它排队=(