EDIT
Ok, vergessen, so alles, was ich vorher beantwortet hatte. Ich habe einige Tests durchgeführt und dies scheint nur bei Android 4.0.3 ein Problem zu sein. Und es gibt schlechte Nachrichten.
Ich fing an, in die Quelle zu graben und ich glaube, dass das Problem auf der WebTextView Klasse liegt. Die Klasse, die Textviews und Textareas behandelt.
Wenn Sie in den Zeilen 233-240 sehen, zeichnet die Methode, die den Hintergrund zeichnet, immer ein blaues Rechteck und ein weißes Rechteck. Welches ist genau das, was dein Screenshot zeigt?
Eine gute Lösung wäre, diese Klasse zu erweitern und zu beheben. Leider there is no WebTextView class in the sdk. Das heißt, Sie können es nicht überschreiben.
Ich versuchte alle Arten von Javascript, um die Textarea Farbe, even overlapping the element zu ändern, aber es hilft nicht. Es ist nicht etwas, was wir aus dem HTML-Code erreichen können.
So können Sie es nicht auf Java reparieren und Sie können es nicht auf Javascript beheben. Ich fürchte, es gibt keine Lösung für dieses Problem.
EDIT
ich korrigiert stehen. Dank @grandstaish für den Fokusvorschlag können wir leicht die Hintergrundfarbe ändern, nachdem die TextView
erstellt wurde. Ich habe versucht, für eine elegante Lösung zu verwenden, aber ich konnte nicht nur die Ansichten, die ich wollte. Jeder TextView hätte einen transparenten Hintergrund und das wollte ich nicht. So ein Hybrid-Ansatz gelöst es:
HTML:
<div style="background:red; position:relative; width:100%; height:500px; z-index:0;" id='behind' >
<textarea name="Name"style="background:green; border:none; height:100px; width:250px; position:absolute; top:0; left:0; z-index:1;"
id='area1' onFocus='runOnFocus()' ></textarea>
</div>
JS:
function runOnFocus(){
if (window.device.platform == "Android" && window.device.version =="4.0.3")
//I had to set a timeout here or this would trigger before the TextView was created. 1ms seems to be enough though.
window.setTimeout(function(){
window.AndroidLayer.setBackground();},1);
}
Java:
private String TAG = "TextArea";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/index.html");
appView.addJavascriptInterface(this, "AndroidLayer");
}
public void setBackground(){
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d("native","gotFocus");
View tv = (View) appView.getFocusedChild();
if (tv == null)
Log.d("native","isNull");
else
tv.setBackgroundColor(Color.TRANSPARENT);
}
});
}
So können wir steuern, welche Elemente auf der Seite der triggert Hintergrund ändern. Ich konnte keine unerwünschten Nebenwirkungen feststellen, aber ich hatte keine Zeit, es in allen Versionen zu testen, also habe ich beschlossen, es auf Version 4.0.3 zu beschränken, die einzige Version, die ich mit diesem Problem herausfinden konnte.
Ich habe diese Arbeit auf einigen Versionen von Android gesehen (ich weiß nicht, welche Version, das Tablet wurde zerschlagen). Auf meinem aktuellen Tablet mit 4.0.x funktioniert es nicht ... Welche Version von Android laufen Sie? –
Das ist ein Problem auf 4.0.3 nur scheinbar. Und soweit ich sagen kann, gibt es keine Lösung. – caiocpricci2
Ich habe endlich Zeit, darauf zurück zu gehen. Ich habe gerade den OnHierarchyChangeListener von weebview übersteuert und jede Sicht in onChildViewAdded auf transparent gesetzt. Wie du gesagt hast, kann ich nicht wählen, welche das haben wird, aber das funktioniert für meine spezielle Anwendung. Vielen Dank, dass Sie sich die Zeit genommen haben, mir zu helfen! : D: D –