【问题标题】:RelativeLayout center vertical相对布局中心垂直
【发布时间】:2013-05-04 16:42:25
【问题描述】:

我想做一个列表行布局。这个布局在最左边有一个 imageview,在 imageview 旁边有一个 textview,在最右边有一个 imageview。我希望它们都是中心垂直的。

<RelativeLayout
    android:layout_width="fill_parent" android:layout_height="100dp"
    android:gravity="center_vertical"
    >
    <ImageView 
        android:id="@+id/icon"
        android:layout_width="50dp" android:layout_height="50dp"
        android:layout_gravity="center_vertical" />
    <TextView 
        android:id="@+id/func_text" android:layout_toRightOf="@id/icon"
        android:layout_width="wrap_content" android:layout_height="100dp"
        android:layout_gravity="center_vertical" />
    <ImageView 
        android:layout_width="50dp" android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:layout_gravity="center_vertical"
        android:src="@drawable/arrow" />
</RelativeLayout>

我还尝试将android:layout_centerVertical="true" 添加到textview,但结果是textview 底部与两个imageview 对齐。 我在 android 4.2 模拟器中试过这个。 有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: android center android-relativelayout


    【解决方案1】:

    使用

     android:layout_centerVertical="true"
    

    【讨论】:

    • 这应该是正确的答案,因为RelativeLayout没有layout_gravity属性。
    • “线性布局中的无效参数”
    【解决方案2】:

    我已经编辑了您的布局。立即检查此代码。

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#33B5E5"
    android:padding="5dp" >
    
    <ImageView
        android:id="@+id/icon"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_centerInParent="true"
        android:background="@android:drawable/ic_lock_lock" />
    
    <TextView
        android:id="@+id/func_text"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_gravity="center_vertical"
        android:layout_toRightOf="@+id/icon"
        android:gravity="center"
        android:padding="5dp"
        android:text="This is my test string............"
        android:textColor="#FFFFFF" />
    
    <ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:layout_centerInParent="true"
        android:layout_gravity="center_vertical"
        android:src="@android:drawable/ic_media_next" />
    
    </RelativeLayout>
    

    【讨论】:

      【解决方案3】:

      如果 View 的高度/宽度 = wrap_content

      使用:

      android:layout_centerHorizontal="true"
      android:layout_centerVertical="true"
      

      如果 View 的高度/宽度 = match_parent

      使用:

      android:gravity="center_vertical|center_horizontal"
      

      【讨论】:

        【解决方案4】:

        尝试将文本视图的顶部和底部与其中一个图标对齐,这将使文本视图与它们共享相同的高度,然后将 gravity 设置为 center_vertical 以使文本视图内的文本垂直居中。

        <TextView 
                android:id="@+id/func_text" android:layout_toRightOf="@id/icon"
                android:layout_alignTop="@id/icon" android:layout_alignBottom="@id/icon"
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:gravity="center_vertical" />
        

        【讨论】:

          【解决方案5】:

          对我来说,我必须删除

          <item name="android:gravity">center_vertical</item>
          

          来自RelativeLayout,所以孩子的配置可以工作:

          <item name="android:layout_centerVertical">true</item>
          

          【讨论】:

            【解决方案6】:

            这对我有用。

            <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:id="@+id/rell_main_bg"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#096d74" > 
            
            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"
                android:layout_centerHorizontal="true"
                android:src="@drawable/img_logo_large"
                android:contentDescription="@null" />
            
            </RelativeLayout>
            

            【讨论】:

              【解决方案7】:

              这可能是因为 textview 太高了。将 textview 的 android:layout_height 更改为 wrap_content 或使用

              android:gravity="center_vertical"
              

              【讨论】:

                【解决方案8】:

                同时添加 android:layout_centerInParentandroid:layout_centerVertical 为我工作以使 ImageView 垂直和水平居中:

                <ImageView
                    ..
                    android:layout_centerInParent="true"
                    android:layout_centerVertical="true"
                    />
                

                【讨论】:

                  【解决方案9】:
                         <RelativeLayout
                              android:layout_width="match_parent"
                              android:layout_height="wrap_content"
                              android:orientation="horizontal">
                  
                              <LinearLayout
                                  android:layout_width="wrap_content"
                                  android:layout_height="wrap_content"
                                  android:layout_alignParentStart="true"
                                  android:layout_centerInParent="true"
                                  android:layout_gravity="center_vertical"
                                  android:layout_marginTop="@dimen/main_spacing_extra_big"
                                  android:orientation="horizontal">
                  
                                  <TextView
                                      android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"
                  
                                      android:fontFamily="@font/noto_kufi_regular"
                                      android:text="@string/renew_license_municipality"
                                      android:textColor="@color/sixth_text"
                                      android:textSize="@dimen/main_text" />
                  
                                  <TextView
                                      android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"
                                      android:fontFamily="@font/noto_kufi_regular"
                                      android:text="@{RenewLicenseBasicInfoFragmentVM.tvMunicipality}"
                                      android:textColor="@color/sixth_text"
                                      android:textSize="@dimen/main_text" />
                              </LinearLayout>
                  
                              <LinearLayout
                                  android:layout_width="wrap_content"
                                  android:layout_height="wrap_content"
                                  android:layout_alignParentEnd="true"
                                  android:layout_centerInParent="true"
                                  android:layout_gravity="center_vertical"
                                  android:layout_marginTop="@dimen/main_spacing_extra_big"
                                  android:orientation="horizontal">
                  
                                  <TextView
                                      android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"
                                      android:layout_gravity="end"
                                      android:fontFamily="@font/noto_kufi_regular"
                                      android:text="@string/renew_license_license_number"
                                      android:textColor="@color/sixth_text"
                                      android:textSize="@dimen/main_text" />
                  
                                  <TextView
                                      android:layout_width="wrap_content"
                                      android:layout_height="wrap_content"
                                      android:layout_gravity="end"
                                      android:fontFamily="@font/noto_kufi_regular"
                                      android:text="@{RenewLicenseBasicInfoFragmentVM.tvLicenseNum}"
                                      android:textColor="@color/sixth_text"
                                      android:textSize="@dimen/main_text" />
                              </LinearLayout>`enter code here`
                  
                          </RelativeLayout>
                  

                  【讨论】:

                    【解决方案10】:
                            <RelativeLayout
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center_vertical"
                            android:layout_marginHorizontal="5dp"
                            android:layout_marginBottom="5dp"
                            android:background="@drawable/default_button">
                    
                            <ImageView
                                android:layout_width="20dp"
                                android:layout_height="20dp"
                                android:layout_alignParentLeft="true"
                                android:layout_centerInParent="true"
                                android:layout_marginStart="15dp"
                                android:src="@drawable/google" />
                    
                            <Button
                                android:id="@+id/btnGmailLogin"
                                android:layout_width="match_parent"
                                android:layout_height="wrap_content"
                                android:background="@null"
                                android:paddingHorizontal="15dp"
                                android:text="@string/gmail_login_button_text"
                                android:textAllCaps="false"
                                android:textColor="@color/black" />
                        </RelativeLayout>
                    

                    【讨论】:

                    • 如果是答案,请在您的答案中直接写下一些描述/信息。
                    猜你喜欢
                    • 2015-01-14
                    • 1970-01-01
                    • 2019-04-10
                    • 2012-06-25
                    • 2012-08-27
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-01-18
                    • 1970-01-01
                    相关资源
                    最近更新 更多