Android 试图将 2 个图像居中,但它们正确对齐

标签 android xml

我有一个布局,左侧有卡片图像。右侧顶部有 2 个按钮。然后是它们下方的 2 张图片,以及 2 张图片下方的一张图片。

我希望 2 张图像和 1 张图像居中。 包含 1 张图像的行完全居中。

部分代码

<LinearLayout
android:id="@+id/mainLayout"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="horizontal">

<ImageView
    android:id="@+id/viewfacebook"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/facebook" />

<ImageView
    android:id="@+id/viewmail"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/mail" />
</LinearLayout> 

我为 2 个图像创建了一个水平容器,并将其重力设置为中心。这是行不通的。我还尝试将重力设置为以 2 张图像为中心。但是....他们总是呆在左边。

完整的 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:orientation="vertical">

<LinearLayout
    android:id="@+id/mainLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical"></LinearLayout>

<LinearLayout
    android:id="@+id/mainLayout"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:background="@drawable/background"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/mainLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="horizontal">

        <LinearLayout
            android:id="@+id/mainLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/cardpic"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="5dp"
                android:src="@drawable/bio" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/mainLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <LinearLayout
                android:id="@+id/mainLayout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:orientation="horizontal">

                <ImageView
                    android:id="@+id/buthome"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ok" />

                <ImageView
                    android:id="@+id/butaffirmation"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/affirmation" />

            </LinearLayout>

            <LinearLayout
                android:id="@+id/mainLayout"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:orientation="horizontal" />

            <ImageView
                android:id="@+id/viewfacebook"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:src="@drawable/facebook" />

            <ImageView
                android:id="@+id/viewmail"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:src="@drawable/mail" />
        </LinearLayout>

        <ImageView
            android:id="@+id/vietwitter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:src="@drawable/twitter" />


        <LinearLayout
            android:id="@+id/mainLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/housetext"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=" *A long and happy marriage or commitment is in your future.\n*Emotional security (loyalty and trust) exists in your relationship.\n*You will have a stable home and family life.\nThe marriage card is about a person who is either going get married or who really cherishes the whole institution of marriage."
                android:textColor="#ff000000"
                android:textSize="18px"
                android:textStyle="bold" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

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

    <TextView
        android:id="@+id/cardtext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" *A long and happy marriage or commitment is in your future.\n*Emotional security (loyalty and trust) exists in your relationship.\n*You will have a stable home and family life.\nThe marriage card is about a person who is either going get married or who really cherishes the whole institution of marriage."
        android:textColor="#ff000000"
        android:textSize="20dp"
        android:textStyle="bold" />
</ScrollView>

</LinearLayout>

最佳答案

遵循您的 XML 有点困难,但这应该会让您走上正轨,试试看。

如果您使用线性布局... 在水平线性布局中并排嵌套要居中的图像 为每个图像分配布局权重 您可能需要使用 match_parent(或根据您的目标 API 进行填充)以及 layout_gravity 和 gravity 参数来调整 layout_widths 和 heights。

<LinearLayout android:gravity="center" ... orientation="horizontal">

    <ImageView 
    android:layout_weight="1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/viewmail"
    android:src="@drawable/mail" />

    <ImageView 
    android:layout_weight="1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/vietwitter"
    android:src="@drawable/twitter" />

</LinearLayout>

关于Android 试图将 2 个图像居中,但它们正确对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13712406/

相关文章:

android - 将 surfaceView(带相机预览)移动到屏幕左侧

java - Android Studio TransformException : Error:Execution failed for task ':app:transformClassesWithDexForDebug'

java - Android 电话通话流

XMLStarlet、XPath - 如何根据节点删除属性

java - 使用 JrxmlDatasource 在 jasperreports 中显示希腊字母

java - LibGDX 内部按钮间距

java - 可以确定要下载的文件的大小吗?

PHP DOMDocument::save() 保存为 ASCII 而不是 UTF-8

sql-server - 在 SQL Server 2005 中使用转换更新 XML 节点

java - 如何使用 Java 解析 XML?