Android:自定义textView中的文本未居中

时间:2019-02-06 19:51:34

标签: android android-layout textview

我有以下布局文件。我想在第二个textView中居中显示文本。在Android Studio设计预览中,文本居中。但是,在运行该应用程序时,它不在中心。

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <FrameLayout
        android:id="@+id/root"
        android:layout_width="match_parent"
        android:layout_height="74dp"
        android:background="@color/white">

        <com.my.app.MyCustomTextView
            android:id="@+id/custom_text_1"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:layout_marginLeft="25dp"
            android:layout_marginTop="15dp"
            android:layout_marginRight="25dp"
            android:layout_marginBottom="15dp"
            android:background="@drawable/rounded_corner_green"
            android:gravity="center"
            android:text="Some text here"
            android:textColor="@color/white"
            android:textSize="16sp" />

        <com.my.app.MyCustomTextView
            android:id="@+id/custome_text_2"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="15dp"
            android:layout_marginRight="15dp"
            android:background="@drawable/circular_red"
            android:gravity="center"
            android:layout_gravity="end"
            android:visibility="gone"
            android:includeFontPadding="false"
            android:textColor="@color/white"
            android:textSize="16sp" />
    </FrameLayout>
</layout>

这是它的外观(0不在中心)

enter image description here

但是,奇怪的是,如果我仅用TextView替换自定义textView,则文本现在居中对齐。

enter image description here

这是MyCustomTextView

public class MyCustomTextView extends TextView {
    public MyCustomTextView (Context context) {
        super(context);
        initView();
    }

    public MyCustomTextView (Context context, AttributeSet attrs) {
        super(context, attrs);
        initView();
    }

    public MyCustomTextView (Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView();
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public MyCustomTextView (Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        initView();
    }

//here the typeface is set on the TextView after creating typeface from font asset
    private void initView() {
        CommonUtils.setCustomFontForText(MyApplication.getAppContext(), MyCustomTextView.this);
    }
}

有人可以帮助我吗?这是怎么了?谢谢!

0 个答案:

没有答案