2013-07-29 52 views
0

我有一個只包含一個textView的小部件,我希望能夠根據用戶偏好編輯textView的顏色,大小和字體。但似乎更新小部件的唯一方法是使用RemoteView。這帶來兩個問題對我來說:編輯小部件的文本,而不受RemotView的限制

1)這將只允許文字,色彩編輯,和大小(但編輯尺寸只有在API 16個可用,我支持11及以上)

2.)這不允許我編輯字體。

幸運的是,textView類http://developer.android.com/reference/android/widget/TextView.html允許我做我想做的一切。有沒有什麼辦法可以在我的widget佈局中的textView上調用這些方法,而不受RemoteView類的限制。

所有幫助非常感謝,這裏是我的代碼到目前爲止。

RemoteViews v = new RemoteViews(getPackageName(), R.layout.widget); 
v.setTextViewText(R.id.widgetTextViewLineOne, widgetTextViewLineOneText); 
v.setTextColor(R.id.widgetTextViewLineOne, widgetColor); 
manager.updateAppWidget(awID, v); 

回答

1

如果你想要的是低的API使用此代碼來設置testView文字大小:

  float textSize = 30.0f
  v.setFloat(R.id.widgetTextViewLineOne, "setTextSize", textSize);

浮動 - > TEXTSIZE是一個數字縮放文字大小取決於在運行代碼的設備上。

+0

感謝您的幫助,但我需要能夠編輯顏色,大小和字體。必須有方法通過遠程視圖調用這些textView方法,但我不知道如何。 – Richard

+1

因此,要調用方法,您只需從RemoteViews調用setFloat,setInt等方法...第一個參數是要更改的RemoteView內的對象ID,第二個參數只是String名稱你想調用TextView的方法,第三個參數是你給String方法的參數。所以我在上面的答案中寫的是等於widgetTextViewLineOne.setTextSize(textSize)...所以你需要做的是從TextView類中找到你需要的方法,並以這種方式調用它 – CodeJunkie

+0

這適用於除了設置字體。我似乎無法找到支持這一點的方法。有一個嗎? – Richard