#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?