【问题标题】:How to center a group of widgets in Android Studio?如何在 Android Studio 中居中一组小部件?
【发布时间】:2017-02-06 05:50:41
【问题描述】:

我是 Android Studio 和移动应用开发新手,我正在尝试创建活动布局。我希望按顺序包含:(1)图片(2)大文本(2)较小的文本,垂直分组并在屏幕上居中。我尝试使用android:layout_gravity="center",但它仅将小部件组水平居中。如何使它以两种方式居中?下面是相关代码:

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


    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/my_image_id"
            android:src="@drawable/my_image"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:text="@string/first_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView1"
            android:layout_gravity="center_horizontal"
            android:textSize="40sp"/>

        <TextView
            android:text="@string/second_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView2"
            android:layout_gravity="center_horizontal"
            android:textSize="15sp"/>
    </LinearLayout>

</LinearLayout>

【问题讨论】:

  • 将所有代码放到相对布局中,设置Main Linear Layout的layout_width和height wrap_content,在main linear layout中设置centerinparent=true。
  • 添加android:gravity="center" 为您最喜欢的LinearLayout
  • 你也可以在这里去掉一个不用的线性布局。

标签: android xml android-layout android-studio android-linearlayout


【解决方案1】:

添加 android:gravity="center" 到父 LinearLayout

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


<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/my_image_id"
        android:src="@drawable/ic_launcher"
        android:layout_gravity="center_horizontal" />

    <TextView
        android:text="@string/first_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView1"
        android:layout_gravity="center_horizontal"
        android:textSize="40sp"/>

    <TextView
        android:text="@string/second_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView2"
        android:layout_gravity="center_horizontal"
        android:textSize="15sp"/>
</LinearLayout>

</LinearLayout>

【讨论】:

  • 此外(1)第二个垂直线性布局现在没用(正如@Pycpik所说)和(2)3个小部件中的所有android:layout_gravity="center_horizontal"也无用。
【解决方案2】:

LinearLayout 的 layout_gravity 是单向的。你是对的。

【讨论】:

    【解决方案3】:

    @ Robb1 你可以通过这段代码做到这一点..

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.android.stackoverflow_test.MainActivity">
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:orientation="vertical">
    
        <ImageView
            android:id="@+id/my_image_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:src="@mipmap/ic_launcher" />
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="first_text"
            android:textSize="40sp" />
    
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="second_text"
            android:textSize="15sp" />
    </LinearLayout>
    

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多