小编Dan*_*joa的帖子

自定义android方形textview文本不居中

我正在尝试创建一个总是平方的textview,所以我已经实现了这个自定义类.

public class SquareTextView extends TextView {

    public SquareTextView(Context context) {
        super(context);
    }

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

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

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        int max = Math.max(getMeasuredWidth(), getMeasuredHeight());
        setMeasuredDimension(max, max);
    }

}
Run Code Online (Sandbox Code Playgroud)

这是一个示例布局,说明了问题:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="8dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="8dp">


    <com.mypackage.SquareTextView
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_gravity="right|top"
        android:background="#000"
        android:gravity="center"
        android:padding="4dp"
        android:text="1"
        android:textColor="#FFF"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是一张图片

在此输入图像描述

这对于使视图平方很有效,然而,似乎重力变得混乱了.有了这个,文本似​​乎总是在左上角.如何才能使TextView始终保持平方但仍保持重力或至少能够使文本居中?

编辑:经过一些测试,我注意到如果你将宽度或高度设置为特定的dp大小,重力似乎再次起作用.所以它可能与WRAP_CONTENT属性有关.是否会在onmeasure方法中以另一种方式处理,这可能导致我自己的方法无法按预期工作?

android textview android-custom-view

3
推荐指数
1
解决办法
1798
查看次数

标签 统计

android ×1

android-custom-view ×1

textview ×1