【发布时间】:2012-07-04 02:11:00
【问题描述】:
我对 android 编程很陌生,但有人为我编写了一个小部件,但他们所做的事情与我想要的有点不同......他们设置了所有小部件中的文本显示为位图而不是文本视图。这并没有给我我想要的控制权。让我发布我所拥有的代码,看看是否有人可以提供帮助。这是它的 .java 代码:
String strHourFormat = "hh:mm";
String strDateFormat = "MM.dd.yy";
SimpleDateFormat fHour = new SimpleDateFormat(strHourFormat);
SimpleDateFormat fDate = new SimpleDateFormat(strDateFormat);
Date date = new Date();
String am = date.getHours() > 11 ? "PM":"AM";
setContentView(R.layout.widget_ui);
TextView day = new TextView(this);
day = (TextView) findViewById(R.id.day);
day.setText("" + fDate.format( date));
day.setTypeface(Typeface.createFromAsset(this.getAssets(), "roboto_thin.ttf"));
///////////
WidgetBiggs.previousState = WidgetBiggs.getWifiState(getApplication());
SoundDebug.previousState = SoundDebug.getSoundState(getApplication());
// Update each requested appWidgetId
RemoteViews widgetView = WidgetBiggs.buildUpdate(getApplication(), -1);
for(int wid:widgetIds){
//final RemoteViews widgetView = new RemoteViews(getPackageName(),R.layout.widget_ui);
widgetView.setImageViewBitmap( R.id.img_Hour, updateFontText(""+fHour.format(date),40,100,84,100,60));
widgetView.setImageViewBitmap( R.id.img_AM, updateFontText(""+am,25,40,84,40,60));
widgetView.setImageViewBitmap( R.id.img_Day, updateFontText("" + fDate.format( date),38,150,40,150,40));
//widgetView.setImageViewBitmap( R.id.img_Weather, updateFontText(getWeatherGoogle().toString(),25,120,30,120,30));
介于两者之间的其他一些东西......
private Bitmap updateFontText(String time, int size, int width, int height, int widthText, int heightText)
{
Bitmap myBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_4444);
Canvas myCanvas = new Canvas(myBitmap);
Paint paint = new Paint();
Typeface clock = Typeface.createFromAsset(this.getAssets(),"roboto_thin.ttf");
paint.setAntiAlias(true);
paint.setSubpixelText(true);
paint.setTypeface(clock);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
paint.setTextSize(size);
paint.setTextAlign(Align.RIGHT );
myCanvas.drawText(time, widthText, heightText, paint);
return myBitmap;
这是我开始的 XML:
<TextView
android:id="@+id/day"
android:visibility="visible"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_horizontal|center_vertical"
android:textSize="32dp">
</TextView>
这会导致我的应用程序出现问题。如果你看到任何突出的东西,请告诉我。我想把位图文字拿出来,把textview文字放进去。谢谢!
【问题讨论】:
-
我不太确定你在这里问什么。您能否澄清您的问题。
-
当然,我很抱歉。我有一个需要显示一些文本的小部件。确切的时间和日期。它目前这样做,但通过画布视图作为位图。正因为如此,文本的大小不会随着我需要的不同密度屏幕而改变。文本在更高分辨率的手机上显得很小。所以我需要将文本显示为文本,这样我可以在 UI.XML 中设置大小,它将在更高分辨率的屏幕上显示为正确的大小。我想知道该怎么做。我(上面)输入的代码似乎不起作用。
-
或者如果以某种方式编写小部件以考虑不同分辨率的屏幕并通过画布视图保持文本显示会更简单。我也会接受。
标签: android text bitmap textview android-canvas