2 WebView's untereinander

  • 4 Antworten
  • Letztes Antwortdatum
C

Chris39

Ambitioniertes Mitglied
9
Hallo Leute,

ich habe eine App erstellt, die zwei Websites untereinander darstellen kann. Zudem kann man in der App die Websites gleichzeitig mit einem Zoom-Button unten zoomen bzw. herauszoomen. Alles kein Problem. Jedoch gibt es unter Android 4.4 Probleme. Wenn ich dort den Zoom-Button betätige, so flimmert das Bild und die Website unten verschwindet ganz. Beim nochmaligen tippen auf den Zoom-Button ist alles ganz verschwunden. Hier ist mein Code:

Code:
public class MainActivity extends Activity {
    
    WebView seite;
    WebView seitezwei;
    
    Button BTplus;
    Button BTraus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        seite = (WebView) findViewById(R.id.seite);
        seite.loadUrl("https://www.google.de/");
        
        seitezwei = (WebView) findViewById(R.id.seitezwei);
        seitezwei.loadUrl("https://www.google.de/");
        
        BTplus = (Button) findViewById(R.id.BTplus);
        BTplus.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                seite.zoomIn();
                seitezwei.zoomIn();
            }
        });
    }
    
    public void BTzuruecksetztenKlick(View view) {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }
}
Hier ist meine Layout-Datei:

Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
            
            <WebView
                android:id="@+id/seite"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
            
            <WebView
                android:id="@+id/seitezwei"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
            
        </LinearLayout>
        
    </ScrollView>
    
    <Button
        android:id="@+id/BTplus"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:text="@string/plus" />
    
    <Button
        android:id="@+id/BTzuruecksetzten"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="@string/zuruecksetzten"
        android:onClick="BTzuruecksetztenKlick" />

    
</RelativeLayout>
Wie kann ich das reparieren?
 
Die Implementierung eines WebClient könnte vielleicht helfen.
Hat leider nicht geholfen:

Code:
public class MainActivity extends Activity {
    
    WebView seite;
    WebView seitezwei;
    
    Button BTplus;
    Button BTraus;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        seite = (WebView) findViewById(R.id.seite);
        seite.loadUrl("https://www.google.de/");
        seite.setWebViewClient(new WebViewClient());
        
        seitezwei = (WebView) findViewById(R.id.seitezwei);
        seitezwei.loadUrl("https://www.google.de/");
        seitezwei.setWebViewClient(new WebViewClient());
        
        BTplus = (Button) findViewById(R.id.BTplus);
        BTplus.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                seite.zoomIn();
                seitezwei.zoomIn();
            }
        });
    }
    
    public void BTzuruecksetztenKlick(View view) {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }
    
    private class WebViewClient extends android.webkit.WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView webView, String url) {
            webView.loadUrl(url);
            return true;
        }
    }
}
Auch wenn ich nur einen WebView benutze, tritt dieser Fehler auf. Als ich jedoch dann auch noch die ScrollView entfernt habe, so gab es nicht mehr diesen Fehler. Jedoch ist hierfür eine ScrollView notwendig. Hat jemand vielleicht noch eine Idee?
 
Zuletzt bearbeitet:
Naja ich glaube das kann schon rein logisch nicht funktionieren.

Du hast eine ScrollView das ist ok.
Darin hast du ein LinearLayout mit height wrap_content das ist auch noch ok.

Aber deine Webviews haben ein match_parent.
Parent ist jetzt aber das LinearLayout.

Das LinearLayout soll jetzt so groß sein wie der Inhalt, also die beiden Webviews und die beiden webviews sollen jeweils genauso groß sein wie das LinearLayout.

Das ist quasi eine Endlosschleife die so nicht wirklich funktionieren kann.

Beides bezieht sich aufeinander und deshalb gibt es vermutlich probleme bei der höhenberechnung und am ende ist beides evtl 0 dp hoch.
Du musst dir halt überlegen wie du das haben willst.
Die webviews sollten dann auf wrap_content sein wenn du die jeweiligen webseiten immer voll drin haben willst (wenn das in einer webview so geht, hab ich bisher nicht wirklich genutzt)
 
  • Danke
Reaktionen: Chris39
Die webviews sollten dann auf wrap_content sein wenn du die jeweiligen webseiten immer voll drin haben willst (wenn das in einer webview so geht, hab ich bisher nicht wirklich genutzt)

Danke, es geht :).
 
Zurück
Oben Unten