2015-08-14 2 views
12

У меня есть TextView, показывающий время. Время обновляется каждую секунду.Как создать вертикальный центр двоеточия в TextView

Я использовал шрифт DIN. Я установил TextView в центр выравнивания (по вертикали). Почему двоеточие соответствует базовой линии? Кто знает, как решить эту проблему?

enter image description here


Update

   <TextView 
        android:id="@+id/time" 
        android:layout_width="wrap_content" 
        android:layout_height="48px" 
        android:layout_below="@id/temperature" 
        android:layout_centerHorizontal="true" 
        android:layout_marginBottom="-5px" 
        android:fontFamily="DIN" 
        android:gravity="center" 
        android:textColor="@color/white" 
        android:textSize="39px" /> 
+1

В зависимости от вашего XML. Отправьте его – Nabin

+1

. Попробуйте проверить это: http://stackoverflow.com/questions/22826411/how-do-i-align-text-view-to-be-in-center-vertically-of-two-numberpickers –

+1

Если это как шрифт отображает глиф ':', тогда вы не можете обойтись без разделения его на несколько видов. – Karakuri

ответ

3

Это путь по умолчанию, как шрифт делает двоеточие. Невозможно изменить это, если вы не создадите отдельный TextViews для двоеточий. В качестве альтернативы вы можете использовать другой шрифт и проверить, действительно ли какой-либо из других шрифтов центрирует chararacter двоеточия. Используйте следующее, чтобы сделать это:

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) 

Для лучшего объяснения шрифтов, которые могут быть использованы, вы можете проверить official documentation.

Надеюсь, что это помогает :)

3

Опцион было бы разделить весь TextView на 5 различных TextViews и добавить android:layout_marginTop="3px" на них с номерами.

2

Поскольку двоеточие является такой простой формой, вы можете построить его из меньших элементов, текстовых представлений, графических примитивов или всего лишь двух видов в вертикальном линейном макете.

Например, начните с создания простой точки в качестве формы Drawable (dot.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> 

Создать представление с этим Drawable в качестве фона (clock_dot.xml в макете папка):

<?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" /> 

Stack две точки, чтобы создать символ двоеточия (clock_colon.xml в папке макета):

<?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> 

Создайте текстовый вид с двумя цифрами (clock_digits.xml):

<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> 

Вы получаете что-то вроде этого:

Screen shot of timer

+0

Наконец, я использую другой шрифт. но спасибо большое. вы идете также полезно. – smallTong

Смежные вопросы