Xamarin.Android:如果没有XML项目模板,则无法在C#中重写-导航面板应用

如何解决Xamarin.Android:如果没有XML项目模板,则无法在C#中重写-导航面板应用

我正在尝试在Microsoft Visual Studio“导航面板应用程序”中重写Xamarin.Android项目的模板。 不使用XML标记进行布局,常量或菜单项除外。 我重写了它,但这并不完美。侧面导航栏没有显示。人们帮助我,请:) 这是我的项目的链接:https://drive.google.com/drive/folders/11Q-L-hwIiL4FtdyX0iAYycQDsgTbGuR9?usp=sharing 这是我的视觉效果:

using System;
using System.Xml.Schema;
using Android;
using Android.App;
using Android.Graphics;
using Android.OS;
using Android.Runtime;
using Android.Support.Annotation;
using Android.Support.Design.Widget;
using Android.Support.V4.View;
using Android.Support.V4.Widget;
using Android.Support.V7.App;
using Android.Views;
using Android.Widget;


namespace NavigationMenuTestApp
{
    [Activity(Label = "@string/app_name",Theme = "@style/AppTheme",MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        DrawerLayout drawer;
        ActionBarDrawerToggle toggle;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this,savedInstanceState);

            // Create your application here

            #region content_main
            var content_mainLayout = new RelativeLayout(this);
            content_mainLayout.LayoutParameters = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent,RelativeLayout.LayoutParams.MatchParent);

            TextView tView1 = new TextView(this);
            tView1.Text = "Hello World!";
            var tView1LayParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MatchParent,RelativeLayout.LayoutParams.MatchParent);
            // android:layout_centerInParent = "true"
            tView1.LayoutParameters = tView1LayParams;
            content_mainLayout.AddView(tView1);
            #endregion

            #region nav_header_main
            var nav_header_mainLayout = new LinearLayout(this);
            nav_header_mainLayout.LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent,Resource.Dimension.nav_header_height);
            //nav_header_mainLayout.Background = (Android.Graphics.Drawables.Drawable)Resource.Drawable.side_nav_bar;
            nav_header_mainLayout.SetGravity(GravityFlags.Bottom);
            nav_header_mainLayout.Orientation = Orientation.Vertical;
            nav_header_mainLayout.SetPadding
            (
                Resource.Dimension.activity_horizontal_margin,Resource.Dimension.activity_vertical_margin,Resource.Dimension.activity_horizontal_margin,Resource.Dimension.activity_vertical_margin
            );
            nav_header_mainLayout.ScrollBarStyle = (ScrollbarStyles)Resource.Style.ThemeOverlay_AppCompat_Dark;

            //ImageView imageView = new ImageView((Android.Content.Context)Resource.Mipmap.ic_launcher);
            //imageView.SetPadding(0,Resource.Dimension.nav_header_vertical_spacing,0);
            //var imageViewLayParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WrapContent,LinearLayout.LayoutParams.WrapContent);
            //imageView.LayoutParameters = imageViewLayParams;

            TextView textView1 = new TextView(this);
            textView1.SetPadding(0,0);
            textView1.Text = @"Xamarin.Android";
            textView1.SetTextAppearance(Resource.Style.TextAppearance_AppCompat_Body1);
            //var textView1LayParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent,LinearLayout.LayoutParams.WrapContent);
            //textView1.LayoutParameters = textView1LayParams;

            TextView textView2 = new TextView(this);
            textView2.SetPadding(0,0);
            textView2.Text = @"xamarin@microsoft.com";
            textView2.SetTextAppearance(Resource.Style.TextAppearance_AppCompat_Body1);
            //var textView2LayParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WrapContent,LinearLayout.LayoutParams.WrapContent);
            //textView2.LayoutParameters = textView2LayParams;

                //nav_header_mainLayout.AddView(imageView); //...

            // nav_header_mainLayout.AddView(textView1);     
            nav_header_mainLayout.AddView
            (
                textView1,ViewGroup.LayoutParams.MatchParent,ViewGroup.LayoutParams.WrapContent
            );

            // nav_header_mainLayout.AddView(textView2);
            nav_header_mainLayout.AddView
            (
                textView2,ViewGroup.LayoutParams.WrapContent,ViewGroup.LayoutParams.WrapContent
            );          
            #endregion

            #region app_bar_main
            var coordinatorLayout = new CoordinatorLayout(this);
            coordinatorLayout.LayoutParameters = new CoordinatorLayout.LayoutParams(CoordinatorLayout.LayoutParams.MatchParent,CoordinatorLayout.LayoutParams.MatchParent);

            var appBarLayout = new AppBarLayout(this);
            appBarLayout.LayoutParameters = new AppBarLayout.LayoutParams(AppBarLayout.LayoutParams.MatchParent,AppBarLayout.LayoutParams.WrapContent);
            //appBarLayout.ScrollBarStyle = (ScrollbarStyles)Resource.Style.AppTheme_AppBarOverlay;

            Android.Support.V7.Widget.Toolbar toolbar = new Android.Support.V7.Widget.Toolbar(this);
            toolbar.LayoutParameters = new Android.Support.V7.Widget.Toolbar.LayoutParams(Android.Support.V7.Widget.Toolbar.LayoutParams.MatchParent,Resource.Attribute.actionBarSize);
            //toolbar.Background = (Android.Graphics.Drawables.Drawable)Resource.Attribute.colorPrimary;
            //toolbar.PopupTheme = Resource.Style.AppTheme_PopupOverlay;

            //<include layout="@layout/content_main" />

            var fab = new FloatingActionButton(this);
            fab.SetForegroundGravity(GravityFlags.Bottom | GravityFlags.End);
           
            // android:layout_margin="@dimen/fab_margin" ...
            //fab.SetCompatElevationResource(Android.Resource.Drawable.IcDialogEmail);

            var fabLayParams = new CoordinatorLayout.LayoutParams(CoordinatorLayout.LayoutParams.WrapContent,CoordinatorLayout.LayoutParams.WrapContent);
            fabLayParams.MarginEnd = Resource.Dimension.fab_margin; //...
            fabLayParams.BottomMargin = Resource.Dimension.fab_margin; //...
            fab.LayoutParameters = fabLayParams;

            appBarLayout.AddView(toolbar);
            coordinatorLayout.AddView(appBarLayout);
            coordinatorLayout.AddView(fab);
            #endregion

            #region activity_main
            drawer = new DrawerLayout(this);
            drawer.LayoutParameters = new DrawerLayout.LayoutParams(DrawerLayout.LayoutParams.MatchParent,DrawerLayout.LayoutParams.MatchParent);
            drawer.SetFitsSystemWindows(true);
            //tools:openDrawer="start"
            /*<include
    layout="@layout/app_bar_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />*/
            var navigationView = new NavigationView(this);
            navigationView.LayoutParameters = new NavigationView.LayoutParams(NavigationView.LayoutParams.WrapContent,NavigationView.LayoutParams.MatchParent);
            navigationView.SetForegroundGravity(GravityFlags.Start);
            navigationView.SetFitsSystemWindows(true);
            navigationView.AddHeaderView(nav_header_mainLayout); //app:headerLayout="@layout/nav_header_main" // (View)Resource.Layout.nav_header_main
            navigationView.InflateMenu(Resource.Menu.activity_main_drawer);//app:menu="@menu/activity_main_drawer"      

            drawer.AddView(navigationView);
            #endregion
            
            //this.SetContentView(mainLayout);//Resource.Layout.activity_main

            coordinatorLayout.AddView(content_mainLayout);
            drawer.AddView(coordinatorLayout);
            this.SetContentView(drawer);

            SetSupportActionBar(toolbar);//Resource.Id.toolbar
            fab.Click += FabOnClick;//Resource.Id.fab

            toggle = new ActionBarDrawerToggle(this,drawer,toolbar,Resource.String.navigation_drawer_open,Resource.String.navigation_drawer_close);
            drawer.AddDrawerListener(toggle);//Resource.Id.drawer_layout
            toggle.SyncState();

            navigationView.SetNavigationItemSelectedListener((NavigationView.IOnNavigationItemSelectedListener)this);//Resource.Id.nav_view          
        }

        public override void OnBackPressed()
        {
            //DrawerLayout drawer = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
            if (drawer.IsDrawerOpen(GravityCompat.Start))
            {
                drawer.CloseDrawer(GravityCompat.Start);
            }
            else
            {
                base.OnBackPressed();
            }
        }

        public override bool OnCreateOptionsMenu(IMenu menu)
        {
            MenuInflater.Inflate(Resource.Menu.menu_main,menu);
            return true;
        }

        public override bool OnOptionsItemSelected(IMenuItem item)
        {
            int id = item.ItemId;
            if (id == Resource.Id.action_settings)
            {
                return true;
            }

            return base.OnOptionsItemSelected(item);
        }

        private void FabOnClick(object sender,EventArgs eventArgs)
        {
            View view = (View)sender;
            Snackbar.Make(view,"Replace with your own action",Snackbar.LengthLong)
                .SetAction("Action",(View.IOnClickListener)null).Show();
        }

        public bool OnNavigationItemSelected(IMenuItem item)
        {
            int id = item.ItemId;

            if (id == Resource.Id.nav_camera)
            {
                // Handle the camera action
            }
            else if (id == Resource.Id.nav_gallery)
            {

            }
            else if (id == Resource.Id.nav_slideshow)
            {

            }
            else if (id == Resource.Id.nav_manage)
            {

            }
            else if (id == Resource.Id.nav_share)
            {

            }
            else if (id == Resource.Id.nav_send)
            {

            }

            //DrawerLayout drawer = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
            drawer.CloseDrawer(GravityCompat.Start);
            return true;
        }

        public override void OnRequestPermissionsResult(int requestCode,string[] permissions,[GeneratedEnum] Android.Content.PM.Permission[] grantResults)
        {
            Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode,permissions,grantResults);

            base.OnRequestPermissionsResult(requestCode,grantResults);
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-