c# - 为 Material Design Android 应用程序选择哪种 Xamarin 项目类型?

标签 c# android xamarin.android xamarin.forms visual-studio-2017

如果我想构建一流的 Material 设计 Android 应用程序,我应该选择哪种 Xamarin 项目类型?

  1. Xamarin.Android 还是跨平台 Xamarin 应用程序?

    我更喜欢“跨平台”应用程序,因为我以后想针对 iOS,但如果缺少某些东西,那么我更喜欢使用 Xamarin.Android 并在以后考虑代码共享。

cross platform

  1. Xamarin.Forms 还是在 XML 中手动定义 android UI?

    Xamarin.Forms应用程序是否包含制作一流的“ Material 设计”应用程序所需的所有细粒度控制?

    Xamarin.Forms 可以实现这样的事情吗?

samples

最佳答案

您可以选择跨平台或 android 特定。此时这并不重要,因为之后您将能够切换到 Material Design。

您只需按照 link 中的说明配置您的 Android 应用程序.

这意味着: 设置颜色(如果你直接设置颜色,你可以不用) Resources/values/colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
      <color name="primary">#2196F3</color>
      <color name="primaryDark">#1976D2</color>
      <color name="accent">#FFC107</color>
      <color name="window_background">#F5F5F5</color>
    </resources>

设置你的风格 Resources/values/style.xml

    <?xml version="1.0" encoding="utf-8"?>
<resources>
      <style name="MyTheme" parent="MyTheme.Base">
      </style>
      <style name="MyTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primaryDark</item>
        <item name="colorAccent">@color/accent</item>
        <item name="android:windowBackground">@color/window_background</item>
        <item name="windowActionModeOverlay">true</item>
      </style>
    </resources>

Resources/values-v21/style.xml

    <?xml version="1.0" encoding="utf-8"?>
<resources>
      <style name="MyTheme" parent="MyTheme.Base">
        <!--If you are using MasterDetailPage you will want to set these, else you can leave them out-->
        <!--<item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>-->
      </style>
    </resources>

Properties/AndroidManifest.xml中添加这个

<application android:label="AppName" android:icon="@drawable/icon" android:theme="@style/MyTheme">

自定义工具栏和标签 Resources/layout/tabs.axml

    <?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.TabLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/sliding_tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:tabIndicatorColor="@android:color/white"
        app:tabGravity="fill"
        app:tabMode="fixed" />

Resources/layout/toolbar.axml

    <?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar 
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        app:layout_scrollFlags="scroll|enterAlways" />

然后在您的主要 Activity 中,您继承自 FormsAppCompatActivity

然后您像这样修改您的 oncreate override

protected override void OnCreate(Bundle bundle)
{
    FormsAppCompatActivity.ToolbarResource = Resource.Layout.toolbar;
    FormsAppCompatActivity.TabLayoutResource = Resource.Layout.tabs;

    base.OnCreate(bundle);
    Forms.Init(this, bundle);
    LoadApplication(new App());
}

关于c# - 为 Material Design Android 应用程序选择哪种 Xamarin 项目类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42854415/

相关文章:

c# - Xamarin.Android - native 代码编译是否使逆向工程更难?

c# - 在 IIS 7 中,APP Pool/DefaultAppPool 用户是否属于 EVERYONE 用户组?

c# - 访问 UWP 页面之间传递的参数

c# - 如何以编程方式将标签的 ForeColor 设置为其默认值?

c# - 在 Xamarin/Maui C# 库中找不到 RegisterForActivityResult?

c# - 进程无法访问文件 'CustomTabsClient_CustomTabsCallbackImpl.class'

c# - WCF REST 不异步处理

android - 如何让导航栏透明

java - 如何使用 Arraylist<Hashmap<String,String>> 中的 bundle 使用 putserializable 获取传递的值

c# - 如何将库中的图像 uri 存储在数据库中以便稍后在 Xamarin.Android 中加载?