Android 如何在TextView中使冒号垂直居中

Android 如何在TextView中使冒号垂直居中,android,textview,Android,Textview,我有一个文本视图显示时间。时间每秒钟更新一次 我用的是DIN字体。我已将TextView设置为居中对齐(垂直)。为什么冒号与基线对齐?谁知道如何解决此问题 更新 这是字体呈现冒号字符的默认方式。除非为冒号创建单独的文本视图,否则无法更改此方式。或者,您可以使用其他字体,并检查是否有任何其他字体实际将冒号字符居中。使用以下方法执行此操作: android:fontFamily="sans-serif" // roboto regular android:fontFamil

我有一个
文本视图
显示时间。时间每秒钟更新一次

我用的是DIN字体。我已将
TextView
设置为居中对齐(垂直)。为什么冒号与基线对齐?谁知道如何解决此问题




更新


这是字体呈现冒号字符的默认方式。除非为冒号创建单独的文本视图,否则无法更改此方式。或者,您可以使用其他字体,并检查是否有任何其他字体实际将冒号字符居中。使用以下方法执行此操作:

android:fontFamily="sans-serif"           // roboto regular
android:fontFamily="sans-serif-light"     // roboto light
android:fontFamily="sans-serif-condensed" // roboto condensed
android:fontFamily="sans-serif-thin"      // roboto thin (android 4.2)
android:fontFamily="sans-serif-medium"    // roboto medium (android 5.0)
要更好地解释可使用的字体,请查看


希望这有帮助:)

一个选项是将整个TextView分成5个不同的TextView,并添加
android:layout\u marginTop=“3px”
在带有数字的元素上。

因为冒号是一个非常简单的形状,您可以从较小的元素(文本视图、图形原语或两个视图)在垂直线性布局中构建它

例如,首先创建一个简单的点作为可绘制的形状(drawable文件夹中的dot.xml):


创建一个以该绘图为背景的视图(布局文件夹中的clock_dot.xml):


堆叠两个点以创建冒号字符(布局文件夹中的clock_colon.xml):


创建两位数的文本视图(clock_digits.xml):


然后根据数字布局和冒号布局构建计时器布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="horizontal"
          android:gravity="center_vertical"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content">
    <include layout="@layout/clock_digits"/>
    <include layout="@layout/clock_colon"/>
    <include layout="@layout/clock_digits"/>
    <include layout="@layout/clock_colon"/>
    <include layout="@layout/clock_digits"/>
</LinearLayout>

你会得到这样的结果:


取决于您的XML。请尝试检查以下内容:如果字体呈现的是
字形,那么如果不将其拆分为多个视图,您将无能为力。您尚未显示您的XML,因此我们不知道您到底在做什么。请检查字体是否存在其他冒号--某些字体具有与基线对齐的冒号和更垂直的冒号凯利中心冒号,因为每个都有不同的用途。最后我使用另一种字体。但非常感谢。你也很有帮助。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="oval">
    <solid android:color="#ccc"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<View xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="3sp"
    android:layout_height="3sp"
    android:background="@drawable/dot"
    android:layout_margin="3sp"
    android:layout_weight="0" />
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_gravity="center_vertical"
          android:gravity="center_vertical"
          android:layout_width="wrap_content"
          android:layout_height="match_parent">
    <include layout="@layout/clock_dot"/>
    <include layout="@layout/clock_dot"/>
</LinearLayout>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="0"
    android:textColor="#ccc"
    android:textSize="24sp"
    android:text="12" />
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="horizontal"
          android:gravity="center_vertical"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content">
    <include layout="@layout/clock_digits"/>
    <include layout="@layout/clock_colon"/>
    <include layout="@layout/clock_digits"/>
    <include layout="@layout/clock_colon"/>
    <include layout="@layout/clock_digits"/>
</LinearLayout>