果冻豆数字时钟

时间:2013-03-09 00:15:42

标签: android android-layout android-widget

我想制作一个像果冻豆一样的时钟(小时以粗体显示,分钟正常),如下图所示: enter image description here

我从Android openSource下载了EditClock小部件,时钟有效,但我无法使用此代码使“Bold”工作: EditClock Source Code 使用果冻豆字体。 这是我布局的一部分

<com.myApp.views.DigitalClock
        android:id="@+id/digitalClock1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/musicDashboard"
        android:layout_centerHorizontal="true" >

         <TextView android:id="@+id/timeDisplayBackground"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:textColor="#ffffffff"
            android:textSize="@dimen/clock_text_size"

            android:textAppearance="?android:attr/textAppearanceMedium"
           android:layout_marginBottom="6dip"
            android:ellipsize="none"
            />

        <TextView android:id="@+id/timeDisplayForeground"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:ellipsize="none"
             android:textStyle="bold"
            android:textColor="#ffffffff"
            android:layout_alignStart="@+id/timeDisplayBackground"
             android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_alignTop="@+id/timeDisplayBackground"
            android:layout_marginBottom="6dip"
            android:textSize="@dimen/clock_text_size"
            />
    </com.myApp.views.DigitalClock>

我怎样才能做到这一点?在姜饼和向上? 感谢

1 个答案:

答案 0 :(得分:1)

您可以修改DigitalClock小部件的代码,以在文本的第一部分周围添加Span。在updateTime()方法中尝试此代码:

CharSequence newTime = DateFormat.format(mFormat, mCalendar);
SpannableString spannable = new SpannableString(newTime);
int endIndex = spannable.indexOf(':');
spannable.setSpan(new StylePan(Typeface.BOLD), 0, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTimeDisplayBackground.setText(spannable);
mTimeDisplayForeground.setText(spannable);
mAmPm.setIsMorning(mCalendar.get(Calendar.AM_PM) == 0);