Android中心线性布局

时间:2016-10-05 08:46:03

标签: android android-layout

我读到了这个:How to align linearlayout to vertical center? 但它并没有帮助我

基本上我试图将2 class Product { private productDto: IProductDto; constructor(productDto: IProductDto) { this.productDto = productDto; } get id(): string { return this.productDto.id; } getProductAttributeByName(name: string): ProductAttribute { return this.productDto.productAttributes.filter(x => x.name === name) } } 置于屏幕中间。这两个按钮水平定位在ImageButtons

我尝试使用垂直方向的linearLayout将两个relativeLayout置于垂直方向的中心,但这似乎无法完成工作。

imagebuttons

两个按钮始终贴在顶部按钮栏上

7 个答案:

答案 0 :(得分:2)

android:layout_height="match_parent"

RelativeLayout , 并用{/ p>替换android:layout_gravity="center"

android:layout_centerInParent="true"

在其子 LinearLayout

让它像 -

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@color/white"
    tools:context="com.example.max.testcase.MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="loadSomething"
        android:padding="5sp"
        android:layout_marginTop="5sp"
        android:layout_marginBottom="5sp"
        android:textAlignment="center"
        android:text="Click here to load the site"
        android:textColor="@color/white"
        android:textSize="16sp"
        android:background="@color/blue"
        />
    <RelativeLayout
        android:layout_width="match_parent"
       android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_gravity="center_vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_centerInParent="true">
            <ImageButton
                android:id="@+id/icon1"
                android:onClick="method1"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:layout_marginTop="100sp"
                android:padding="20dp"
                android:paddingTop="50dp"
                android:adjustViewBounds="true"
                android:layout_gravity="left"
                android:gravity="center_horizontal"
                android:scaleType = "fitCenter"
                android:maxWidth="350dp"
                android:maxHeight="350dp"
                android:background="@color/white"
                android:src="@drawable/icon1" />

            <ImageButton
                android:id="@+id/icon2"
                android:onClick="method2"
                android:layout_width="0dp"
                android:layout_weight= "1"
                android:layout_height="wrap_content"
                android:layout_marginTop="100sp"
                android:padding="20dp"
                android:paddingTop="50dp"
                android:layout_gravity="right"
                android:gravity="center_horizontal"
                android:adjustViewBounds="true"
                android:maxWidth="350dp"
                android:maxHeight="350dp"
                android:scaleType="fitCenter"
                android:background="@color/white"
                android:src="@drawable/icon2"
                />
        </LinearLayout>
    </RelativeLayout> </LinearLayout>

答案 1 :(得分:1)

您的问题似乎有点不清楚,但希望此提示可以帮助您

<强>机器人:layout_gravity

  • android:layout_gravity用于设置元素在其父级中的位置(例如View内的子级Layout。 LinearLayout和FrameLayout支持

<强>机器人:重力

android:gravity用于设置元素内容的位置(例如TextView内的文字)。

获取和想法复制此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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_gravity="left"
        android:gravity="center_vertical">

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/first"
            android:background="@color/colorPrimary"
            android:gravity="left"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/second"
            android:background="@color/colorPrimary"
            android:gravity="center"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/third"
            android:background="@color/colorPrimary"
            android:gravity="right"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_gravity="center"
        android:gravity="center_vertical">

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/first"
            android:background="@color/colorAccent"
            android:gravity="left"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/second"
            android:background="@color/colorAccent"
            android:gravity="center"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/third"
            android:background="@color/colorAccent"
            android:gravity="right"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_gravity="right"
        android:gravity="center_vertical">

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/first"
            android:background="@color/colorPrimaryDark"
            android:gravity="left"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/second"
            android:background="@color/colorPrimaryDark"
            android:gravity="center"/>

        <TextView
            android:layout_width="@dimen/fixed"
            android:layout_height="wrap_content"
            android:text="@string/third"
            android:background="@color/colorPrimaryDark"
            android:gravity="right"/>

    </LinearLayout>

</LinearLayout>

答案 2 :(得分:0)

确保Button的所有父级布局设置为android:layout_height="match_parent"

然后将android:layout_centerVertical="true"应用于RelativeLayout

答案 3 :(得分:0)

尝试这种方式它将起作用

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@android:color/white"
    >

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="loadSomething"
        android:padding="5sp"
        android:layout_marginTop="5sp"
        android:layout_marginBottom="5sp"
        android:textAlignment="center"
        android:text="Click here to load the site"
        android:textColor="#ffffff"
        android:textSize="16sp"
        android:background="#ff00"
        />
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_gravity="center_vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_centerVertical="true"
            android:layout_gravity="center">
            <ImageButton
                android:id="@+id/icon1"
                android:onClick="method1"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:layout_marginTop="100sp"
                android:padding="20dp"
                android:paddingTop="50dp"
                android:adjustViewBounds="true"
                android:layout_gravity="left"
                android:gravity="center_horizontal"
                android:scaleType = "fitCenter"
                android:maxWidth="350dp"
                android:maxHeight="350dp"
                android:background="#ffffff"
                android:src="@mipmap/ic_launcher" />

            <ImageButton
                android:id="@+id/icon2"
                android:onClick="method2"
                android:layout_width="0dp"
                android:layout_weight= "1"
                android:layout_height="wrap_content"
                android:layout_marginTop="100sp"
                android:padding="20dp"
                android:paddingTop="50dp"
                android:layout_gravity="right"
                android:gravity="center_horizontal"
                android:adjustViewBounds="true"
                android:maxWidth="350dp"
                android:maxHeight="350dp"
                android:scaleType="fitCenter"
                android:background="#ffffff"
                android:src="@mipmap/ic_launcher"
                />
        </LinearLayout>
    </RelativeLayout>
</LinearLayout>

答案 4 :(得分:0)

像这样更改你的布局

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@color/white"
    tools:context="com.example.max.testcase.MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="loadSomething"
        android:padding="5sp"
        android:layout_marginTop="5sp"
        android:layout_marginBottom="5sp"
        android:textAlignment="center"
        android:text="Click here to load the site"
        android:textColor="@color/white"
        android:textSize="16sp"
        android:background="@color/blue"
        />


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center"
        android:layout_centerVertical="true"
        android:layout_alignParentStart="true">
        <ImageButton
            android:id="@+id/icon1"
            android:onClick="method1"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:layout_marginTop="100sp"
            android:padding="20dp"
            android:paddingTop="50dp"
            android:adjustViewBounds="true"
            android:layout_gravity="left"
            android:gravity="center_horizontal"
            android:scaleType = "fitCenter"
            android:maxWidth="350dp"
            android:maxHeight="350dp"
            android:background="@color/white"
            android:src="@drawable/icon1" />

        <ImageButton
            android:id="@+id/icon2"
            android:onClick="method2"
            android:layout_width="0dp"
            android:layout_weight= "1"
            android:layout_height="wrap_content"
            android:layout_marginTop="100sp"
            android:padding="20dp"
            android:paddingTop="50dp"
            android:layout_gravity="right"
            android:gravity="center_horizontal"
            android:adjustViewBounds="true"
            android:maxWidth="350dp"
            android:maxHeight="350dp"
            android:scaleType="fitCenter"
            android:background="@color/white"
            android:src="@drawable/icon2"
            />
    </LinearLayout>

</RelativeLayout> 

答案 5 :(得分:0)

在根线性布局中添加layout_gravity和gravity属性,值中心垂直,这将使他的所有孩子在中心垂直对齐。 注意:make child height wrap_content,实现这一点。如果您的孩子身高是match_parent,那么这将无效。

答案 6 :(得分:0)

requestPermissions(new String[]{Manifest.permission.CAMERA}, REQ_ACCESS_FINE_LOCATION);