如何在Android的TextView中使文本中心垂直排成一行

时间:2014-03-25 08:27:26

标签: android textview android-edittext line center

我的多行编辑文字带有 100dp lineSpacingExtra

现在文本显示在一行的顶部。并且光标的高度与行高相同,它比文本的高度高得多。

如何将文字显示在行的中心? 或者,如果我可以在一行中调整文本的填充顶部或填充底部。

注意: 我的意思是不使用android:gravity =“center_vertical”使文本中心在TextView中垂直。 我想在行中垂直显示文本中心。

xml如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:background="@android:color/transparent"
        android:fadingEdge="vertical"
        android:gravity="top"
        android:inputType="textCapSentences|textMultiLine|textShortMessage"
        android:lineSpacingExtra="100dp"
        android:longClickable="false"
        android:minLines="10"
        android:paddingBottom="5dp"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:paddingTop="5dp"
        android:scrollbars="vertical"
        android:text="Text ABCDE\n Line2"
        android:textAlignment="center"
        android:textSize="16sp" />
</LinearLayout>

感谢任何帮助。 THX!

2 个答案:

答案 0 :(得分:0)

编辑答案:

输出是:

enter image description here

代码(来自我自己的xml标签,因此请更改您的ID):

        <LinearLayout
                android:id="@+id/layout_feedback"
                android:layout_width="401dp"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tv_six"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="27dp"
                android:background="@drawable/textfield_activated_holo_dark"
                android:gravity="center_horizontal"
                android:orientation="horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="0"
                    android:gravity="center_horizontal"
                    android:hint="Em   "
                    android:visibility="invisible"
                    android:textColor="@color/white"
                    android:textSize="24sp" />

                <EditText
                    android:id="@+id/ed_feedback_know"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:background="@drawable/textfield_empty_holo_dark"
                    android:focusable="true"
                    android:text="Text ABCDE\n Line2"
                    android:focusableInTouchMode="true"
                    android:inputType="textEmailAddress"
                    android:textColor="@android:color/black"
                    android:textSize="24sp" />
            </LinearLayout>

答案 1 :(得分:0)

在此附上我的结果:
在申请中无法做到这一点 因为TextView在框架的顶部绘制文本 如果您希望文本显示的文本垂直居中的视觉效果,则必须修改框架代码。

文件位置是:
框架/碱/核心/ JAVA /机器人/文本/ StaticLayout.java

改变:

-        lines[off + DESCENT] = below + extra;
+        lines[off + DESCENT] = below + extra/2;//Show the text center vertically in the line.

如果出现问题或者有更好的方法,请纠正我。