Нижняя панель навигации Android отображается после входа в webview

#android #android-layout #android-fragments #webview #android-webview

#Android #android-layout #android-фрагменты #webview #android-webview

Вопрос:

Я работаю в Android studio с единственным основным видом деятельности, в котором есть Webview, я добавил в него нижнюю панель навигации, а в webview есть функция входа в систему, я хочу, чтобы нижняя панель навигации не отображалась при входе в систему, она отображается после входа в систему, как я могу этого добиться? у меня есть только одно основное действие.

Я пытаюсь решить, но не могу…

Основной код действия:

 myview = (WebView) findViewById(R.id.webView);
progressBar=(ProgressBar) findViewById(R.id.prg);
WebSettings webSettings = myview.getSettings();
webSettings.setJavaScriptEnabled(true);
myview.loadUrl("https://mysuite.app/");
bottomNavigationView= (BottomNavigationView) findViewById(R.id.navigation1);
bottomNavigationView.setVisibility(View.INVISIBLE);
// bottomNavigationView.getMenu().findItem(R.id.webView).setVisible(false);
    bottomNavigationView.setOnNavigationItemReselectedListener(new BottomNavigationView.OnNavigationItemReselectedListener() {
    @Override
    public void onNavigationItemReselected(@NonNull MenuItem menuItem) {

        switch (menuItem.getItemId()) {

        case R.id.action_profile:
            myview.loadUrl("https://mysuite.app/profilo.php");
            return;

        case R.id.action_order:
            myview.loadUrl("https://mysuite.app/ordini.php");
            return;

        case R.id.action_points:
            myview.loadUrl("https://mysuite.app/punti.php");
            return;

        case R.id.action_network:
            myview.loadUrl("https://mysuite.app/viparea.php");
            return;

        case R.id.action_home:
            myview.loadUrl("https://mysuite.app");
            return;

        default:
        return;

        }
    }
}
  

xml-код:

 <android.support.design.widget.BottomNavigationView
        android:id="@ id/navigation1"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_alignParentBottom="true"
        android:background="@color/white1"
        app:menu="@menu/my_navigation_items" /> 
  

Комментарии:

1. Хорошо, теперь у вас есть какие-либо сведения о моем вопросе??

Ответ №1:

Вы можете либо добавить LoginActivity, который реализует только WebView и MainActivity, чтобы содержать BottomNavigationView

Или, если важно, чтобы вы использовали только одно действие, вы могли бы использовать фрагменты использования… Мы создадим новый фрагмент с именем loginFragment и при раздувании loginFragment мы заменим корневой макет вместо дочернего представления и установим BottomNavigationView видимость на невидимую.

вот так…

 <!-- Take notice of the id assigned to the CoordinatorLayout -->
<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:id="@ id/rootLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Views.Discipleship.Supervisor.Main.MainActivityBottomNav">

<!-- Appabar / toolbar layout -->
<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:visibility="invisible"
    android:background="#FFF">
</android.support.design.widget.AppBarLayout>

<!-- Where you would normally replace your fragment layout -->
<FrameLayout
    android:id="@ id/frame_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="?attr/actionBarSize"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<!-- Bottom navigation -->
<android.support.design.widget.BottomNavigationView
    android:id="@ id/navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:visibility="invisible"
    app:menu="@menu/bottom_navigation"/>

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

И в вашем MainActivity… при раздувании вашего фрагмента,

 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.rootLayout, fragment);
    transaction.commit();
  

Также, как вы уже сделали в своем коде выше, не забудьте снова сделать видимость BottomNavigationView видимой при загрузке следующего фрагмента.

Редактировать, создавая новый фрагмент

После этого в открывшемся окне назовите свой фрагмент, в нашем случае (LoginFragment)… Android сгенерирует большую часть кода для вас, включая создание файла макета для вновь созданного фрагмента…

Создайте WebView внутри этого файла компоновки фрагментов fragment_login.xml вместо основного макета activity, где он находится сейчас…

Теперь измените свой основной макет activity, похожий на приведенный выше xml, после чего увеличьте свой LoginFragment, используя приведенные выше коды…

Я предлагаю вам ознакомиться с фрагментами, чтобы лучше понять, что здесь происходит, особенно с кодами, которые будут сгенерированы для вас в вашем новом фрагменте…

Также я должен заявить, что все это необычно, но работает… Но опять же, WebView для входа в систему также не является обычным.

Комментарии:

1. сэр, не могли бы вы рассказать мне более подробно?? я новичок в Android?? Вы сказали, что теперь я создаю фрагмент входа, затем какой код я добавляю в этот фрагмент, пожалуйста, расскажите мне подробно?

2. Сэр, возможно ли, чтобы нижняя панель навигации отображалась по определенному URL-адресу в одном действии? Означает, что если я добавлю URL, который откроется после входа в систему, и нижняя панель навигации откроется в этот момент??

3. Хорошо, но не могли бы вы, пожалуйста, объяснить мне, чего именно вы пытаетесь достичь с помощью постоянной замены нижней панели навигации… Что вы пытаетесь создать?

4. Сэр, я выполняю работу в проекте, у которого есть URL-адрес webview, клиент хочет, чтобы нижняя панель навигации отображалась после входа в систему, проблема в том, что я выполняю работу только в одном действии, и login is in url означает сказать, что я не добавляю функциональность входа в систему, она уже встроена в URL, клиент требует, чтобы она отображалась после входа в систему, вот почему я спрашиваю вас, возможно, что нижняя панель навигации отображается в определенном URL?