簡體   English   中英

LinearLayout中的中心按鈕

[英]Center button in a LinearLayout

我只想居中“ CenterButton”(根LinearLayout的中心),但Android只是不合作。

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_gravity="center_horizontal"
    android:layout_weight="0.00"
    android:padding="5dp"
    android:background="#zegerg"
    android:id="@+id/LinearLayout1">

    <ImageView
        android:id="@+id/ImageView1"
        android:layout_height="match_parent"
        android:layout_width="151dp"
        android:src="@mipmap/image_1"
        android:contentDescription="@string/abcdef"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:id="@+id/CenterButton"
        android:layout_gravity="center_horizontal|center_vertical|center"/>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="20dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Text !"
            android:id="@+id/TextView"
            android:paddingBottom="30dp"
            android:textColor="#37a52c" />

        <ProgressBar
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/ProgressBar"
            android:paddingBottom="30dp"
            android:progressTint="#37a52c" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/text_text"
            android:id="@+id/Button2"
            android:layout_gravity="center_horizontal" />
    </LinearLayout>
</LinearLayout>

嘗試將其放在XML的末尾,但由於其他元素將其擱置一旁而無法正常工作。

您可以將重量用於此類目的子項目。 讓所有的人layout_width0dp並設置layout_weight1。

如果您希望所有三個第一級子級都位於相同大小的列中,則需要向它們所有添加以下屬性:

android:layout_width="0dp"
android:layout_weight="1" 

(不要忘了width參數的尺寸“ dp”,否則IDE會抱怨)。

...
    <ImageView
        android:id="@+id/ImageView1"
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1" 
        android:src="@mipmap/image_1"
        android:contentDescription="@string/abcdef"/>

    <Button
        android:layout_width="0dp"
        android:layout_weight="1" 
        android:layout_height="wrap_content"
        android:text="Button"
        android:id="@+id/CenterButton"
        android:layout_gravity="center_horizontal|center_vertical|center"/>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_weight="1" 
        android:layout_height="match_parent"
        android:padding="20dp">
....

編輯:如果您希望您的CenterButton與所有其他視圖重疊,那么您要做的是:

  1. 將所有內容包裝成高度等於200dp的相對布局,作為其第一個子對象
  2. 從當前位置刪除按鈕CenterButton並將其添加到所有內容的底部,仍在相對布局內,但在線性布局下
  3. 將這些屬性添加到按鈕以使其在父窗口中居中

android:layout_centerInParent =“ true”

因此,最終您將獲得如下內容(我更改了一些資源):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="200dp">


    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_gravity="center_horizontal"
        android:layout_weight="0.00"
        android:padding="5dp"
        android:background="@android:color/holo_orange_dark"
        android:id="@+id/LinearLayout1">

        <ImageView
            android:id="@+id/ImageView1"
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:src="@drawable/plus"
            android:contentDescription="abcdef"/>


        <LinearLayout
            android:orientation="vertical"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:padding="20dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Text !"
                android:id="@+id/TextView"
                android:paddingBottom="30dp"
                android:textColor="#37a52c" />

            <ProgressBar
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/ProgressBar"
                android:paddingBottom="30dp"
                android:progressTint="#37a52c" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="text"
                android:id="@+id/Button2"
                android:layout_gravity="center_horizontal" />
        </LinearLayout>
    </LinearLayout>


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Button"
        android:id="@+id/CenterButton"
        android:layout_gravity="center_horizontal|center_vertical|center"/>

</RelativeLayout>

將最上面的線性布局中的三個子代的重力設為1,並將寬度設為0。

目前尚不清楚您到底是什么問題。 但是,以下是一些一般注意事項:

  • 要在RelativeView中居中放置視圖或布局,請使用layout_centerInParent =“ true”
  • 要在其他布局之上制作一個Layout,請使用FrameLayout
  • xml文件中視圖/布局的順序很重要。 您編寫的最后一個將位於頂部(在我們的示例中:應該在xml文件中的其他視圖和布局之后編寫FrameLayout或只是CenterButton)
  • 要在其視圖中的LinearLayout內部分配可用空間,請使用android:layout_weight =“ 1” (根據您的需要更改值)

您可以通過以下示例擱淺:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="200dp">

    <LinearLayout
        android:id="@+id/LinearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:background="#fff"
        android:orientation="horizontal"
        android:padding="5dp">

        <ImageView
            android:id="@+id/ImageView1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:src="@mipmap/ic_launcher" />

        <View
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:orientation="vertical">

            <TextView
                android:id="@+id/TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingBottom="30dp"
                android:text="Text !"
                android:textColor="#37a52c" />

            <ProgressBar
                android:id="@+id/ProgressBar"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingBottom="30dp"
                android:progressTint="#37a52c" />

            <Button
                android:id="@+id/Button2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="text_text" />
        </LinearLayout>

    </LinearLayout>

    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true">

        <Button
            android:id="@+id/CenterButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|center_vertical|center"
            android:text="Button" />

    </FrameLayout>

</RelativeLayout>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM