2017-08-24 118 views
1

Android开发中的新品...我在按钮上有徽章文字,但出于某种原因,文字未与中心对齐。Badge TextView文字未对齐到中心

我创建了一个新的片段,并设置Component TreerelativeLayout

然后,我已经添加的按钮和TextView的。

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 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/relativeLayout" 
    android:layout_width="match_parent" 
    android:layout_height="200dp"> 

    <Button 
     android:id="@+id/intercom_button" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginTop="40dp" 
     android:background="@drawable/ic_intercom_logo" 
     android:elevation="10dp" 
     android:outlineProvider="bounds" 
     android:shadowColor="@color/brownishGrey" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <TextView 
     android:id="@+id/intercom_badge_textView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignEnd="@id/intercom_button" 
     android:layout_alignRight="@id/intercom_button" 
     android:layout_alignTop="@id/intercom_button" 
     android:layout_marginEnd="8dp" 
     android:layout_marginTop="35dp" 
     android:background="@drawable/badge_circle" 
     android:elevation="11dp" 
     android:paddingEnd="8dp" 
     android:paddingLeft="8dp" 
     android:paddingRight="8dp" 
     android:text="10" 
     android:textAlignment="center" 
     android:gravity="center" 
     android:textColor="#FFF" 
     android:textSize="10dp" 
     app:layout_constraintEnd_toEndOf="@+id/intercom_button" 
     app:layout_constraintTop_toTopOf="parent" /> 

</android.support.constraint.ConstraintLayout> 

drawable/badge_circle我已经使用过。

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="ring" 
    android:useLevel="false" 
    android:thickness="8dp" 
    android:innerRadius="0dp" 
    > 

    <solid 
     android:color="#F00" 
     /> 
    <stroke 
     android:width="1dip" 
     android:color="#F00" /> 

    <padding 
     android:top="2dp" 
     android:bottom="2dp"/> 

</shape> 

这导致

enter image description here

从我的理解它正在发生,因为TextView的属性设置为

layout_width:wrap_content 
layout_height:wrap_content 

但如果我把它们设置为静态约束像

layout_width:16dp 
layout_height:16dp 

文字仍然不对齐。同样设置重力或文本对齐不起作用

android:textAlignment="center" 
android:gravity="center" 

我该如何解决这个问题?

+0

你在我们的android.support.constraint.ConstraintLayout上添加了一个中心标签吗? – DroiDev

+0

我有这个对吗?问题是“10”没有画在红圈的中间? – 0X0nosugar

+0

是否有一个原因,不仅仅是将文本添加到带有android:text =“10”'的按钮。它应该自动为你居中。 – windedmoose

回答

2

badge_circle.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="ring" 
    android:useLevel="false" 
    android:thickness="8dp" 
    android:innerRadius="0dp" 
    > 

    <solid 
     android:color="#F00" 
     /> 
    <stroke 
     android:width="1dip" 
     android:color="#F00" /> 


</shape> 

切换到的TextView

<TextView 
    android:id="@+id/intercom_badge_textView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignEnd="@id/intercom_button" 
    android:layout_alignRight="@id/intercom_button" 
    android:layout_alignTop="@id/intercom_button" 
    android:layout_marginTop="35dp" 
    android:background="@drawable/badge_circle" 
    android:elevation="11dp" 
    android:paddingTop="5dp" 
    android:paddingBottom="5dp" 
    android:paddingEnd="8dp" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    android:text="10" 
    android:textAlignment="center" 
    android:gravity="center|center_horizontal|center_vertical" 
    android:textColor="#FFF" 
    android:textSize="10dp" 
    app:layout_constraintEnd_toEndOf="@+id/intercom_button" 
    app:layout_constraintTop_toTopOf="parent" 
    tools:layout_editor_absoluteX="357dp" /> 

我从徽章圆的内部除去填充并加入在进入的TextView ....似乎是固定的。 ..