Android 底部导航栏在 webview 中登录后显示

Posted

技术标签:

【中文标题】Android 底部导航栏在 webview 中登录后显示【英文标题】:Android Bottom Nav Bar Show After login in webview 【发布时间】:2019-07-25 03:49:05 【问题描述】:

我在 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_
        android:layout_
        android:layout_alignParentBottom="true"
        android:background="@color/white1"
        app:menu="@menu/my_navigation_items" /> 

【问题讨论】:

好的,现在你知道我的问题了吗?? 【参考方案1】:

您可以添加仅实现 WebView 的 LoginActivity 和 MainActivity 以包含 BottomNavigationView

或者,如果你只使用一个活动,你可以使用 use 片段...我们将创建一个名为 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_
    android:layout_
    tools:context=".Views.Discipleship.Supervisor.Main.MainActivityBottomNav">

<!-- Appabar / toolbar layout -->
<android.support.design.widget.AppBarLayout
    android:layout_
    android:layout_
    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_
    android:layout_
    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_
    android:layout_
    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 的可见性设置回可见。

编辑 Creating a new fragment

然后,在打开的窗口中,为您的片段命名,在我们的例子中为 (LoginFragment)...Android 将为您生成大部分代码,包括为新创建的片段创建布局文件...

在片段布局文件fragment_login.xml 中创建WebView,而不是现在的主活动布局...

现在修改你的主要活动布局,看起来像上面的 xml,然后使用上面的代码膨胀你的 LoginFragment...

我建议您阅读片段以更好地了解这里发生的事情,尤其是将在您的新片段中为您生成的代码...

此外,我必须声明,这一切都不是传统的,但它确实有效......但话又说回来,用于登录的 WebView 也不是传统的。

【讨论】:

先生,你能告诉我更多细节吗??我是安卓新手??你说现在我正在创建一个登录片段,那么我在这个片段中添加了哪些代码,请详细告诉我? 先生,底部导航栏是否有可能在一项活动中显示在特定网址上?意思是说,如果我添加一个登录后打开的网址,此时底部导航栏打开?? 好的,但是您能否向我解释一下您通过不断换出底部导航栏到底想要实现什么...您要构建什么? 先生,我在有 webview url 的项目中工作,客户希望在登录后显示底部导航栏,问题是我只在一个活动中工作,登录在 url意思是说我没有添加登录功能,它已经内置在 url 中,客户端要求它在登录后显示,这就是为什么我问你底部导航栏可能显示在特定 url 中?

以上是关于Android 底部导航栏在 webview 中登录后显示的主要内容,如果未能解决你的问题,请参考以下文章

Android Compose 新闻App导航动画WebView浮动按钮底部导航

Xamarin.Forms Android 底部导航栏

为啥我的底部导航栏在推送时变为空白?

底部应用栏在使用片段导航时向上/向下滑动(导航架构组件)

React Native 标题/底部标签栏在第一个应用程序加载时跳跃

Android如何隐藏底部虚拟按键