首页 > 解决方案 > 无法垂直居中 ImageButton

问题描述

我有一个小问题,我似乎无法解决。我创建了一个 ImageButton 和一个 TextView。它们在彼此下方,但我希望它们垂直和水平居中。我已经将它水平放置,但无论我做什么......我都无法让它垂直居中(所以在屏幕中间)。这是我的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#0e2a56"
    android:weightSum="100">
    <ImageButton
        android:src="@drawable/add"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="25"
        android:id="@+id/imageButton1"
        android:gravity="center_vertical|center_horizontal"  />
    <TextView
        android:text="Add project"
        android:textColor="#FFFFFF"
        android:textSize="35dp"
        android:textStyle="bold"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minWidth="25px"
        android:minHeight="25px"
        android:id="@+id/textView1"
        android:gravity="center_vertical|center_horizontal" />
</LinearLayout>

我究竟做错了什么?

标签: xamarin.android

解决方案


当我们使用LinearLayout布局时:

  • android:orientation="vertical"android:layout_gravity仅适用于水平方向,不适用于垂直方向。渲染了Leftrightcenter_horizo​​ntal

  • android:orientation="horizontal"android:layout_gravity仅适用于垂直方向,但不适用于水平方向。topbottomcenter_vertical被渲染。

因此,如果您想将 imagebutton 和 textview 居中,您可以将它们包装在 RelativeLayout 中,如下所示:

<?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="match_parent"
  android:background="#0e2a56"
  >
  <LinearLayout 
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="vertical"
     android:layout_centerInParent="true"
     android:gravity="center_horizontal"
     >
    <ImageButton
      android:src="@drawable/add"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageButton1"

      />
    <TextView
      android:text="Add project"
      android:textColor="#FFFFFF"
      android:textSize="35dp"
      android:textStyle="bold"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:minWidth="25px"
      android:minHeight="25px"
      android:id="@+id/textView1"
      />
 </LinearLayout>
</RelativeLayout>

推荐阅读