如何使用xamarin为Android API 19创建BottomNavigationView

时间:2018-09-13 10:47:08

标签: c# android xamarin

我试图在具有xamarin的API 19的Android手机上显示底部导航视图。没用谁能告诉我为什么它不起作用?

我的代码是

    Resources/layout/Main.xaml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
                xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:gridSpec="1|8|#0093eeff|K:#ee8700ff:16,l:72,l:16,r|S:#83ee00ff:16,0,l:16,56,l:16,0,r">
  <!-- Header aligned to top -->
  <RelativeLayout
      android:id="@+id/header"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:background="@drawable/header_bg">
    <!-- TODO Fill Dynamic, Format, Position-->
    <TextView
        android:id="@+id/prodCount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="2dp"
        android:text="0 Artikel"
        style="@style/TotalTxt"
        android:layout_alignParentLeft="true" />

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="0dp"
        android:layout_marginStart="0dp"
        android:background="?android:attr/windowBackground"
        android:layout_alignParentBottom="true"
        app:menu="@menu/navigation" />
  </RelativeLayout>
</RelativeLayout>


Resources/menu/navigation.xaml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

  <item
      android:id="@+id/navigation_home"
      android:title="title_home" />

  <item
      android:id="@+id/navigation_dashboard"
      android:title="title_dashboard" />
</menu>

问题是智能手机上出现白屏。我该如何解决该问题?

2 个答案:

答案 0 :(得分:3)

  

我的问题是我无法安装依赖项“ com.android.support:design:25.1.0”,因为它与API 19不匹配。该API已过时。

您可以将项目目标android版本更改为Android 7.0(API 24)或更高版本,然后可以下载此android支持设计。 enter image description here

请注意:保持目标版本与编译版本一致 enter image description here

enter image description here

我做了一个有关使用xamarin为Android创建BottomNavigationView的示例。

1。在Manage NuGet程序包中下载并安装Xamarin.Android.Support.Design…

enter image description here 2.在menu目录中创建一个新的Resources文件夹,并添加一个新的.xml文件,在navigation_main.xml中创建Resources/menu/

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">

  <item
android:orderInCategory="0"
android:id="@+id/menu_genres"
android:enabled="true"
android:title="Genres"
android:icon="@drawable/abc_ic_ab_back_material"
app:showAsAction="always" />

  <item
android:orderInCategory="1"
android:id="@+id/menu_titles"
android:enabled="true"
android:title="Titles"
android:icon="@drawable/abc_ic_ab_back_material"
app:showAsAction="always" />

  <item
android:orderInCategory="2"
android:id="@+id/menu_stream"
android:enabled="true"
android:title="Stream"
android:icon="@drawable/abc_ic_ab_back_material"
app:showAsAction="always" />

  <item
android:orderInCategory="3"
android:id="@+id/menu_showtimes"
android:enabled="true"
android:title="Showtimes"
android:icon="@drawable/abc_ic_ab_back_material"
app:showAsAction="always" />

</menu>

3。当选择其中一项时,底部导航通过替换片段来工作。这意味着我们的Android xml还应该具有一个FrameLayout来交换将要显示的片段。

<RelativeLayout 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="match_parent"
android:layout_height="match_parent">

 <FrameLayout
     android:id="@+id/fragment_content"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_above="@+id/bottom_navigation" />

 <android.support.design.widget.BottomNavigationView
     android:id="@+id/bottom_navigation"
     android:layout_width="match_parent"
     android:layout_height="56dp"
     android:layout_gravity="start"
     android:layout_alignParentBottom="true"
     android:background="@android:color/white"
     app:menu="@menu/navigation_main" />

有关更多信息,请查看以下文章: https://blog.xamarin.com/exploring-androids-bottom-navigation-view/

答案 1 :(得分:0)

请看一下这篇文章

https://blog.iamsuleiman.com/using-bottom-navigation-view-android-design-support-library/

这是针对Android而非Xamarin / C#的解决方案,但也许可以为您提供帮助。

我还使用Xamarin.Forms和Android上新的底部导航/底部选项卡进行了一些测试,并且在使用API​​ 19的情况下工作良好,只是在Drawable向量周围存在问题,并且解决了w /:AppCompatDelegate.CompatVectorFromResourcesEnabled = true;

希望这对您有所帮助。