2017-07-30 6 views
-2

J'essaie d'obtenir un élément de couleur en utilisant getresources.getColor(resource id) mais Android me dit qu'il a été obsolète utiliser getresources.getColor(resource id, theme).Comment utiliser la nouvelle version de getresources(). GetColor?

Comment puis-je dire quel thème utiliser? J'ai essayé R.style.AppTheme mais je reçois une erreur (getColor (R.color.notepad_margin) getResources().) Car cela est une valeur int

public class TodoListItemView extends AppCompatTextView { 
public TodoListItemView(Context context, AttributeSet attributeSet, int ds) { 
    super(context, attributeSet, ds); 
    init(); 
} 

public TodoListItemView(Context context) { 
    super(context); 
    init(); 
} 

public TodoListItemView(Context context, AttributeSet attributeSet) { 
    super(context, attributeSet); 
    init(); 
} 

private Paint marginPaint; 
private Paint linePaint; 
private int paperColor; 
private float margin; 

private void init() { 
    Resources myResources = getResources(); 

    marginPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
  • marginPaint.setColor;

    linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); 
    
  • linePaint.setColor (myResources.getColor (R.color.notepad_lines));

  • paperColor = myResources.getColor (R.color.notepad_paper);

    margin = myResources.getDimension(R.dimen.notepad_margin); 
    

    }

    @Override public void onDraw (toile Canvas) { canvas.drawColor (paperColor);

    canvas.drawLine(0, 0, getMeasuredHeight(), 0, linePaint); 
    canvas.drawLine(0, getMeasuredHeight(), getMeasuredWidth(), getMeasuredHeight(), linePaint); 
    
    canvas.drawLine(margin, 0, margin, getMeasuredHeight(), marginPaint); 
    
    canvas.save(); 
    canvas.translate(margin, 0); 
    
    super.onDraw(canvas); 
    canvas.restore(); 
    

    }}

Toute aide est grandement appréciée.

Répondre

1

Utilisez ContextCompat.getColor(context, R.color.your_color);

+0

Oui. C'est la manière recommandée de gérer différentes API. – Gary99

+0

L'utilisation de null en tant que thème efface l'erreur, mais l'application ne démarre pas. – user182162

+0

J'ai essayé d'utiliser ContextCompat mais je continue d'obtenir des erreurs de version sur le sdk – user182162

0

Merci pour toutes les entrées. ContextCompat.getColor a fonctionné aussi loin que la correction des erreurs. L'interface, les erreurs enum étaient dues à une parenthèse de fermeture étrangère.

Mon seul reproche est que maintenant l'application ne fonctionne pas. Un message s'affiche sur l'émulateur indiquant que l'application a cessé de fonctionner. Aucune chance de tester les changements.