[ERLEDIGT] WebView Probleme

V

VeePay

Neues Mitglied
0
Hallo zusammen,
ich habe mich auf Anfrage meiner Community dazu durchgerungen eine Android App zu erstellen.
Dies sollte eigentlich kein großes Problem darstellen, da es nur eine Homepage Anzeige via WebView ist.
nun habe ich dies einerichtet und muss leider feststellen, dass ich die Anzeige nicht wirklich hinbekommen.
Die Homepage wird überhauptnicht auf das Display angepasst. D.h. ich sehe einen minimalen Teil der Homepage (oben links). Ich habe bereits sämtliche Foren durchforstet und finde einfach nichts passendes. Deshalb veruche ich es hier und erhoffe mir, dass Profis mir dabei evtl. helfen können :)

<meta name="viewport" content="width=device-width"/> habe ich bereits in der index.php probiert. Über den normalen Brwoser zeigt dies wirkung, leider nicht in der App.

Ich möchte, dass die Homepage in der Breite beim start komplett angezeigt wird. Nach unten hin scrollbar.
Zudem würde ich gerne eine Zoom-Funktion einbauen. Ich habe bereits in ätlichen Foren gelesen, dass diese eigentlich im WebView integriert sein soll, bei mir leider icht :-(

Ich habe für die Entwicklung der App "Android Studio 2.3.2" verwenden.
Die betroffene Homepage ist www.die-gamer-community.de

AndroidManifest.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.die_gamer_community.dgc">

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity.java
Code:
package de.die_gamer_community.dgc;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {
    private WebView myWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myWebView = (WebView)findViewById(R.id.webView);
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.loadUrl("http://www.die-gamer-community.de");
        myWebView.setWebViewClient(new WebViewClient());

    }

    @Override
    public void onBackPressed() {
        if(myWebView.canGoBack()){
            myWebView.goBack();
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

activity_main.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context="de.die_gamer_community.dgc.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

    <WebView
        android:id="@+id/webView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</android.support.design.widget.CoordinatorLayout>

content_main.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="de.die_gamer_community.dgc.MainActivity"
    tools:showIn="@layout/activity_main">

    <WebView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        app:layout_constraintRight_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>

Ich hoffe ihr könnt mir bei meinem Problem helden.

VG
VeePay
 
Hallo VeePay,

ich habe mir erlaubt , deinen Code erst mal Quer zu lesen , bin aber nicht in die Details gegangen.

Was mir auf Anhieb aufgefallen ist :

a) ändere mal im layout die ganzen fill_parent in match_parent - fill_parent ist deprecated.
b) deine includes im layout sind auch nicht soooooo gerne gesehen - und an dem Punkt
wundere ich mich , warum du zwei Webviews einbindest einmal mit ID , einmal ohne.
Nimm hierzu mal bitte erst mal ein ganz normales RelativeLayout und EINEM Webbiew als
Activity-Layout. Im Prinzip ist alles zu sehr verschachtelt, um hier vernünftig auf die Fehlersuche zu gehen.

Ergo : Nimm ein BasicLayout, schau ob es damit geht und DANN kannst du step for step
deine Wünsche umsetzen.
(Ich konnte auch bei deiner Umsetzungen nichts besonderes feststellen , was ein Standardlayout
nicht auch leisten könnte)

c) Grundsätzlich würde ich allerdings empfehlen , deine Web mit JQuery Mobile zu versehen , auch wenn man diese
mit dem normalen Chrome-Mobile anzeigen kann
- allerdings antiquiert und auf einem Mobile eigentlich so nicht bedienbar.
d) den WebViewClient kannst du oben weglassen , da du ja den Standard eh nimmst , das brauchst du nur zu machen , wenn du eine Custom - abgeleitete Klasse hast
 
Zuletzt bearbeitet:
Hallo Stefan,

vielen Dank für deine schnelle Antwort.

Ich habe die Programmierung aus einem YouTube Video, da alles nicht funktioniert hat. Da in dem obrigen Code die möglichkeit drin ist, dass man mit der zurück Taste des Devices die App nicht sofort schließt sondern immer einen Schritt zurück gelangt, habe ich diesen behalten :)
Ebenfalls habe ich beide Varianten im Layout probiert (fill_parent & match_parent). Sehe da keinerlei Unterschied.

Das mit dem Jquery_Mobile habe ich stark vermutet. Jedoch hatte ich eine riesige Scheu vorm kompletten ändern meiner HP Daten. Ich muss gestehen, dass ich kein Programmierer bin und sehr froh bin, dass ich meine Page so zum laufen gebracht habe xD

Habe gestern versucht dies umzustellen und bin nach dieser Anleitung vogegangen In 5 Schritten: Von der aktuellen Website zum Responsive Webdesign - DieProduktMacher GmbH
Sobald ich dies so eingestellt habe, habe ich im normalen Browser am Samsung Galaxy S4 (Android 5.0.1) und am Huawei Honor 7 die gleiche hp Ausgabe wie bei der App. Wenn ich dies wieder entferne, ist die Ansicht im Browser normal.

Auch ein neuerstellen einer App (Emty Activity) bleibt die Ansicht wie gewohnt :-(

AndroidManifest.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.die_gamer_community.dgc">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity.java
Code:
package de.die_gamer_community.dgc;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    private WebView wv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //WebView Dinge
        wv = (WebView)findViewById(R.id.webView);
        wv.setWebViewClient(new WebViewClient());
        wv.getSettings().setJavaScriptEnabled(true);
        wv.loadUrl("http://www.die-gamer-community.de");
    }
}

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

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</RelativeLayout>

Den WebViewClient musste ich einbauen, da ansonsen die App beim aufrufen den normalen Internetbrowser, Chrome,... benutzen möchte.

Ich möchte eigentlich keine großartigen Futures in der App haben.
Lediglich eine komplette Ansicht der HP (Device spezifisch), mit der zurück Taste soll man einen Schritt zurück kommen (nicht die App gleich schließen) und eine Zoom Funktion (Zwei-Finger-System).

Ihr seit da meine letzte Hoffnung bevor ich meiner Community das Projekt als gescheitert erklären muss.

VG
VeePay
 
Konnte mein Problem lösen.
Hab mir eine neue hp aufgesetzt (responsive).
 

Ähnliche Themen

S
Antworten
4
Aufrufe
944
Sempervivum
S
R
Antworten
3
Aufrufe
1.564
Ritartet
R
K
Antworten
3
Aufrufe
1.142
Kapikalaani
K
Zurück
Oben Unten