【问题标题】:Which Xamarin project type to choose for a material design Android app?为材料设计 Android 应用程序选择哪种 Xamarin 项目类型?
【发布时间】:2017-03-17 09:59:35
【问题描述】:

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

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

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

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

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

    Xamarin.Forms 可以实现这些吗?

【问题讨论】:

  • 如果您的应用程序很复杂,并且您希望在每个平台上都可以优化设计 - 我会说使用原生 android 应用程序(所以,不要使用 xamarin 表单)。除非应用程序非常简单,否则我总是这样做。
  • 如果根据您的屏幕截图,您可以在 X.Forms 中完成所有这些操作。 棘手的部分是将编辑/搜索组件放在导航栏的顶部。请参阅 forums.xamarin.com/discussion/84526/titleview-for-pages ,这在 X.Forms 中是不可能的 - 你必须为此做自定义渲染器。

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


【解决方案1】:

您可以选择跨平台或特定于 android。此时没关系,因为您之后可以切换到材料设计。

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

这意味着: 设置颜色(如果直接设置颜色,则可以不设置) 资源/值/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>

设置你的风格 资源/值/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>

资源/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">

自定义工具栏和选项卡 资源/布局/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" />

资源/布局/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" />

然后在你的主要活动中,你继承自FormsAppCompatActivity

然后你像这样修改你的 oncreate 覆盖

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());
}

【讨论】:

    【解决方案2】:

    如果你创建一个新的 Xamarin Forms prj,你的 Android prj 应该准备好Material Design

    首先,将您的 Target 框架设置为 Android 6.0 或更高版本。

    然后您应该应用新的主题并自定义工具栏和选项卡。

    最后是把MainActivity改成

    public class MainActivity : FormsAppCompatActivity
    

    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());
    }
    

    【讨论】:

      【解决方案3】:

      在“Visual C#”>“跨平台”中选择“Blank Xaml App”

      您可以看到两个选项,例如 Blank Xaml App(Xamarin.Forms Portable) 和 Blank Xaml App(Xamarin.Forms Shared)。您可以根据您的项目要求选择其中之一。这两个选项都使用材料设计创建 android 应用程序项目。

      【讨论】:

        猜你喜欢
        • 2017-10-21
        • 1970-01-01
        • 2015-02-10
        • 1970-01-01
        • 2019-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-25
        相关资源
        最近更新 更多