2017-08-24 121 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 ....似乎是固定的。 ..