【问题标题】:Android not centering TextView's text vertically on device/emulator (but fine though in Android Studio's designer view)Android没有在设备/模拟器上垂直居中TextView文本(但在Android Studio设计器视图中很好)
【发布时间】:2016-05-15 17:22:13
【问题描述】:

我有这个设置:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:id="@+id/postHeader">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="CP"
            android:id="@+id/initialsView"
            android:layout_alignTop="@+id/avatarView"
            android:layout_alignLeft="@+id/avatarView"
            android:layout_alignBottom="@+id/avatarView"
            android:layout_alignRight="@+id/avatarView"
            android:background="@drawable/avatar_background"
            android:textColor="@color/white"
            android:gravity="center"
            android:textStyle="bold"
            android:textSize="16sp" />

        <com.makeramen.roundedimageview.RoundedImageView
            app:riv_corner_radius="20dp"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:id="@+id/avatarView"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginTop="14dp"
            android:layout_marginLeft="20dp"
            android:layout_marginBottom="6dp"
            app:riv_border_color="@color/lightGray"
            app:riv_border_width="0.2dp" />

    ...
/>

TextView 与图像视图正确对齐。 Android Studio 一切正常:

但是,当我在实际设备 (Android 4.4.4) 或模拟器 (Android 6.0) 上运行时,文本(屏幕截图中的“CP”)一直卡在顶部,就像我没有设置一样垂直重力。我尝试将textAlignment、宽度和高度设置为match_parentlayout_centerInParent 设置为both、将重力设置为center_vertical 明确、includeFontPadding 设置为false,但无济于事。它仍然没有垂直居中(虽然水平很好)。

我做错了什么?为什么它在 Android Studio 上仍然正确显示?

【问题讨论】:

    标签: android android-layout textview android-relativelayout android-studio-2.0


    【解决方案1】:

    好的,经过一番调查,我已经找到了问题所在。好像坏了:https://code.google.com/p/android/issues/detail?id=63673

    在链接中实施解决方案解决了我的问题:

      private static final int AT_MOST_UNSPECIFIED = MeasureSpec.makeMeasureSpec((1<<30)-1, MeasureSpec.AT_MOST);
    
      @Override
      protected void onMeasure(int widthSpec, int heightSpec)
      {
        // RelativeLayout has bugs when measured in UNSPECIFIED height mode that were supposedly
        // fixed in API 18. However the 'fix' does breaks gravity == center_vertical in TextView. 
        // https://code.google.com/p/android/issues/detail?id=63673
        if (MeasureSpec.getMode(heightSpec) == MeasureSpec.UNSPECIFIED) heightSpec = AT_MOST_UNSPECIFIED;
        super.onMeasure(widthSpec, heightSpec);
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-04
      • 2017-06-30
      • 2023-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-23
      • 1970-01-01
      • 2019-07-17
      相关资源
      最近更新 更多