2017-07-21 10 views
0

現在、私はAndroidのウィジェットについて学んでいます。以前はダミープロジェクトにウィジェットを実装しようとしましたが、TextViewを黒色で表示することができました。しかし、今私は別のプロジェクトがあり、同じ方法でウィジェットを実装しました。ウィジェットにテキストを表示することはできますが、白い背景を使用している間は、テキストの色は白です。私はテキストを黒にした私の以前のプロジェクトで何かを修正するとは思わない。私はここに何かが間違っているような何かを逃していますか?Context多分?私のウィジェットのTextViewのテキストの色が白いのはなぜですか?

ウィジェットアイテム:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/tv_text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="@style/Base.TextAppearance.AppCompat.Body1" /> 

</LinearLayout> 

RemoteViewsService:

public class WidgetItemService extends RemoteViewsService { 

    @Override 
    public RemoteViewsFactory onGetViewFactory(Intent intent) { 
     return new ItemFactory(); 
    } 

    class ItemFactory implements RemoteViewsService.RemoteViewsFactory { 

     private List<String> mStrings; 

     public IngredientItemFactory() { 

     } 

     @Override 
     public void onCreate() { 

     } 

     @Override 
     public void onDataSetChanged() { 

      Cursor c = getContentResolver().query(StringContract.StringEntry.CONTENT_URI, null, null, null, null); 
      mStrings = CursorUtils.extract(c); 

     } 

     @Override 
     public void onDestroy() { 

     } 

     @Override 
     public int getCount() { 
      return mStrings.size(); 
     } 

     @Override 
     public RemoteViews getViewAt(int pos) { 
      String string = mStrings.get(pos); 

      RemoteViews views = new RemoteViews(getPackageName(), R.layout.widget_item); 
      views.setTextViewText(R.id.tv_text, string); 

      return views; 
     } 

     @Override 
     public RemoteViews getLoadingView() { 
      return null; 
     } 

     @Override 
     public int getViewTypeCount() { 
      return 1; 
     } 

     @Override 
     public long getItemId(int i) { 
      return i; 
     } 

     @Override 
     public boolean hasStableIds() { 
      return true; 
     } 
    } 
} 

AppWidgetProvider:

public class Widget extends AppWidgetProvider { 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
     for (int appWidgetId: appWidgetIds) { 
      String string = PrefUtils.load(this, appWidgetId); 

      RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 

      Intent intent = new Intent(context, WidgetItemService.class); 

      views.setRemoteAdapter(R.id.lv_list, intent); 
      views.setEmptyView(R.id.lv__list, R.id.tv_empty); 

      views.setTextViewText(R.id.tv_title, string); 

      Intent openActivity = BActivity.createIntent(string); 

      PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, openActivity, PendingIntent.FLAG_UPDATE_CURRENT); 

      views.setOnClickPendingIntent(R.id.widget, pendingIntent); 

      appWidgetManager.updateAppWidget(appWidgetId, views); 
     } 
    } 

    @Override 
    public void onDeleted(Context context, int[] appWidgetIds) { 
     for (int appWidgetId : appWidgetIds) { 
      PrefUtils.delete(context, appWidgetId); 
     } 
    } 
} 
+0

新しいプロジェクトのテーマを確認してください。 –

答えて

0

あなたのコードによります。

<TextView 
    android:id="@+id/tv_text" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="@style/Base.TextAppearance.AppCompat.Body1" /> 

style="@style/Base.TextAppearance.AppCompat.Body1"が見つかりました。

クリックしました。これでした。

<style name="Base.TextAppearance.AppCompat.Body1"> 
    <item name="android:textSize">@dimen/abc_text_size_body_1_material</item> 
    <item name="android:textColor">?android:textColorPrimary</item> 
</style> 

android:textColorPrimaryをご覧ください。

次に、theme colorをご覧ください。

+0

すべてがうまく見えます。最後に、 'android:textColor =" @ color/textColorPrimary ""を手動で適用します。 – Sam

+0

@Sam 'android:textColor =" @ color/textColorPrimary'はツールバーフォントの色です。確認することができます。 – KeLiuyue

関連する問題