FFFFFUUUUU… je viens de chercher, j’ai trouvé, c’est tout con et je suis déjà passé par là.
Pour injecter une feuille de style sous Android j’ai pas trouvé d’autre moyen que de passer par l’utilisation d’une redirection par un lien en « javascript: », chose que j’utilisais déjà sur mon extension Chrome pour contrôler le player Deezer. C’est sale mais ça a l’avantage de plutôt bien fonctionner.
Donc il suffit de définir un chargement d’URL après le chargement de la page. De cette façon on peut ajouter le Javascript ou le CSS de son choix au document. Par exemple si votre WebView affiche une seule WebApp sans la possibilité d’en sortir ça permettra d’éviter le chargement de ces ressources, de gagner du temps, du trafic (côté client comme serveur) et d’avoir un utilisateur un peu plus heureux.
Le code est le suivant :
// Indispensable, sinon Javascript ne fonctionne pas dans notre webview
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new iManagerWebViewClientServices() {
// On remplace l'action par défaut (qui est... vide) et on charge notre CSS
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:"
+ "var styles = document.createElement('STYLE'); "
+ "styles.innerHTML = '" + getResources().getString(R.string.web_view_styles) + "';"
+ "document.body.appendChild(styles)");
}
});Le code est mis dans la chaîne web_view_style pour être plus facile à éditer. Le innerHTML n’est pas non plus des plus beaux mais ça évite des heures de prise de tête avec le support CSS de Javascript. Petit détail, le caractère ‘ doit être banni de votre feuille de style vu qu’il la délimite.

Bonjour,
Ton post est un peu vieux mais je tente ma chance.
Je charge une page web dans une webview et j’aimerai modifier le css pour l’adapter à l’écran. Sachant que je ne suis pas propriétaire de la page que je charge, comment modifier ce css ?
Voila ce que j’ai fait mais le code n’est pas injecter :
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
WebView webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress)
{
activity.setTitle(« Loading… »);
activity.setProgress(progress * 100);
if(progress == 100)
activity.setTitle(R.string.app_name);
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
{
// Handle the error
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
});
//Pour le changement de css
final String css = « #header { display:none; } »;
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient() {
// On remplace l’action par défaut (qui est… vide) et on charge notre CSS
public void onPageFinished(WebView view, String url) {
view.loadUrl(« javascript: »
+ « var styles = document.createElement(‘STYLE’); »
+ « styles.innerHTML = ‘ »+ css + »‘; »
+ « document.body.appendChild(styles) »);
}
});
//fin d’ajout
webView.loadUrl(« http://monsite.com »);
}
Merci d’avance ;)