草庐IT

android - 在 Xamarin Forms 中设置元素的资源名称

coder 2023-12-22 原文

我希望能够引用将 Xamarin Forms 应用程序编译到 Android 后创建的元素。


示例代码:

<Entry Placeholder="Username" 
       Text="{Binding UserName, Mode=TwoWay}"
       x:Name="UsernameEntry"
       x:Key="UsernameEntry" />

<Entry Placeholder="Password"
       IsPassword="True" 
       Text="{Binding Password, Mode=TwoWay}" 
       x:Name="PasswordEntry" 
       x:Key="PasswordEntry" />

<Button Text="{extensions:Translate LogIn}" 
        Command="{Binding LoginUserCommand}"
        x:Name="LoginButton" 
        x:Key="LoginButton" />

据我所知,Elements的方式生成的是这样的:

android:id​/content​/RelativeLayout[0]​/PlatformRenderer[0]​/NavigationPageRenderer[0]​/PageContainer[0]​/PageRenderer[0]​/Platform_DefaultRenderer[0]​/Platform_DefaultRenderer[1]​/EntryRenderer[0]​/FormsEditText[0]
android:id​/content​/RelativeLayout[0]​/PlatformRenderer[0]​/NavigationPageRenderer[0]​/PageContainer[0]​/PageRenderer[0]​/Platform_DefaultRenderer[0]​/Platform_DefaultRenderer[1]​/EntryRenderer[1]​/FormsEditText[0]
android:id​/content​/RelativeLayout[0]​/PlatformRenderer[0]​/NavigationPageRenderer[0]​/PageContainer[0]​/PageRenderer[0]​/Platform_DefaultRenderer[0]​/Platform_DefaultRenderer[1]​/ButtonRenderer[2]​/AppCompatButton[0]

这是不可用的,我只想能够这样命名资源:

UsernameEntry
PasswordEntry
LoginButton

然后引用它们。


用例:

  • Firebase 测试:

  • Play 商店发布前报告:

我觉得这应该很容易做到,但我花了一天的大部分时间寻找但没有发现任何帮助,我们将不胜感激。

最佳答案

这些 Android 小部件/控件是动态创建的(在本例中是通过 Forms 的 XAML),而不是来自被扩充的 AXML 布局,因此没有要解析的布局,也没有分配资源名称(没有分配 R.* 常量)。

预启动登录凭据需要资源名称而不是 ID。仅供引用:小部件 ID 可以在运行时分配(即通过该控件的自定义表单渲染器),但这在这种情况下没有帮助,因为您需要基于字符串的资源名称。

如果您的 Forms 应用需要演示/测试凭据,并且您要使用 Play 商店的预报告,则必须继续使用自动测试爬虫并提供要为您的测试运行的自定义 Robo 脚本.

注意:

您可以在 Xamarin.Android 项目中使用一些虚构的资源名称创建一个虚拟布局,因此在构建时,这些名称会在自动生成的 C# Resource.Id 和 Java R.ID 文件中分配 int ID,然后在运行时(在 native 代码中,通过 DI/IoC/Forms 的渲染器/...)获取基于表单的登录页面的 Android Widgets,并使用创建的 ID 分配这些用户名/密码 Widgets 的 ID 属性来自虚拟布局的资源字符串名称。

关于android - 在 Xamarin Forms 中设置元素的资源名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53586510/

有关android - 在 Xamarin Forms 中设置元素的资源名称的更多相关文章

  1. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  2. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  3. ruby - 在哈希的键数组中追加元素 - 2

    查看我的Ruby代码:h=Hash.new([])h[0]=:word1h[1]=h[1]输出是:Hash={0=>:word1,1=>[:word2,:word3],2=>[:word2,:word3]}我希望有Hash={0=>:word1,1=>[:word2],2=>[:word3]}为什么要附加第二个哈希元素(数组)?如何将新数组元素附加到第三个哈希元素? 最佳答案 如果您提供单个值作为Hash.new的参数(例如Hash.new([]),完全相同的对象将用作每个缺失键的默认值。这就是您所拥有的,那是你不想要的。您可以改用

  4. ruby - 在 Ruby 中按名称传递函数 - 2

    如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只

  5. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  6. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  7. ruby-on-rails - 应用程序的名称是否可以作为变量使用? - 2

    当我创建一个Rails应用程序时,控制台:railsnewfoo我的代码可以使用字符串“foo”吗?puts"Yourapp'snameis"+app_name_bar 最佳答案 Rails.application.class将为您提供应用程序的全名(例如YourAppName::Application)。从那里您可以使用Rails.application.class.parent获取模块名称。 关于ruby-on-rails-应用程序的名称是否可以作为变量使用?,我们在StackOve

  8. ruby-on-rails - 如何从过时的 TZInfo 标识符中获取 Rails TimeZone 名称? - 2

    已经有一个问题回答了如何将“America/Los_Angeles”转换为“PacificTime(US&Canada)”。但是我想将“美国/太平洋”和其他过时的时区转换为RailsTimeZone。我无法在图书馆中找到任何可以帮助我完成此任务的东西。 最佳答案 来自RailsActiveSupport::TimeZonedocs:TheversionofTZInfobundledwithActiveSupportonlyincludesthedefinitionsnecessarytosupportthezonesdefinedb

  9. ruby-on-rails - 如何在 Rails 中设置路由的默认格式? - 2

    路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

  10. ruby - Hanami link_to 助手只呈现最后一个元素 - 2

    我是HanamiWorld的新人。我已经写了这段代码:moduleWeb::Views::HomeclassIndexincludeWeb::ViewincludeHanami::Helpers::HtmlHelperdeftitlehtml.headerdoh1'Testsearchengine',id:'title'hrdiv(id:'test')dolink_to('Home',"/",class:'mnu_orizontal')link_to('About',"/",class:'mnu_orizontal')endendendendend我在模板上调用了title方法。htm

随机推荐