如何找到android textview的中点

时间:2016-06-18 11:03:27

标签: android textview

我有一个TextView的子类,想要通过使其高度为1px来绘制一条水平线。没关系,但我也希望通过将上边距设置为高度的一半来使其垂直居中。 然而事实证明是失败的。 任何解决方案? 谢谢

        LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 1);
        int h = getHeight();
        lp.setMargins(0, h/2, 0, 0);

3 个答案:

答案 0 :(得分:0)

您可以在xml中执行此操作:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello World!.\nA second line test."/>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray"
        android:layout_centerVertical="true"/>
</RelativeLayout>

问候。

答案 1 :(得分:0)

如果你带着一些截图来到这里,你可以轻松地帮助你。但我可以建议你使用FrameLayout

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_gravity="center"
        android:background="#123456" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="Horizontal Line" />

</FrameLayout>

此处FrameLayout有一个指南:Frame Layout

截图:

enter image description here

答案 2 :(得分:0)

如果没有XML,您可以覆盖public final class TextViewEx extends TextView { private final Paint mPaint = new Paint(); protected final void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(1); mPaint.setColor(Color.GRAY); float y = getHeight() / 2f; canvas.drawLine(0, y, getWidth(), y, mPaint); } } 并在子类TextView中绘制线条,如下所示:

var pivotData = data.GroupBy(x => new {x.MAName, x.feldtext}, (key, group) => new { MAName = key.Column1, feldtext = key.Column2, count = group.Count()  });