gpt4 book ai didi

android - MvvmCross Custom Spinner 保持默认外观

转载 作者:搜寻专家 更新时间:2023-11-01 08:53:25 26 4
gpt4 key购买 nike

我使用 MvvmCross 在我的 Xamarin Android 应用程序中有一个自定义微调器。我使用自定义的唯一原因是因为模型包含一个类,我希望微调器使用该类的属性填充值。但是,下拉菜单的外观看起来不像我的应用程序的其余部分。它缺少右侧的单选按钮,并且间距已关闭。如何使这个自定义微调器看起来像其他微调器一样?

    <Mvx.MvxSpinner
style="@style/spinner_input"
local:MvxItemTemplate="@layout/item_spinner"
local:MvxDropDownItemTemplate="@layout/item_spinnerdropdown"
local:MvxBind="ItemsSource ProductCategoryOptions; SelectedItem SelectedProductCategory" />

Item_Spinner.axml - 这部分看起来恰到好处,选择一个值后下拉菜单的外观看起来就像其他的一样。

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/black"
android:text="Test"
local:MvxBind="Text Caption" />

Item_SpinnerDropDown.axml - 我认为这是错误的文件。下拉菜单的外观不匹配。

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/black"
android:text="Test"
local:MvxBind="Text Caption" />

最佳答案

Checkable 微调器以及支持 activated 状态指示器是我们最近在 MvvmCross 中开展的工作 - 例如,请参阅此问题和相关提交 https://github.com/MvvmCross/MvvmCross/issues/481

要使 MvxSpinner 支持默认样式,您应该能够简单地指定没有 local:MvxItemTemplatelocal:MvxDropDownItemTemplate - 在这种情况下,微调器使用资源:

 global::Android.Resource.Layout.SimpleDropDownItem1Line
global::Android.Resource.Layout.SimpleSpinnerDropDownItem

这将只使用标准的 Android 布局模板,但将依赖于您的列表项 ToString() 实现,而不是使用 Caption 属性。

这类似于微调器和适配器在“普通”Android 应用程序中使用的内容 - 例如见http://developer.android.com/guide/topics/ui/controls/spinner.html

Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);

如果您想编写自己的微调器布局并将它们基于 Android 布局,那么查看 Android 源代码以找到原始布局可能是最简单的方法 - 例如看着:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4_r1/frameworks/base/core/res/res/layout/simple_spinner_dropdown_item.xml/

此处的一个小高级警告是,标准 MvvmCross 列表项将在使用前将这些显示的列表项包装在 framelayout 中。这不会对许多布局产生影响 - 但可能会影响某些布局。如果它影响你的,那么你可能需要编写自己的自定义列表项 View (基于 https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Binding.Droid/Views/MvxBaseListItemView.cs )


关于此的最后一点说明 - 请注意 https://github.com/MvvmCross/MvvmCross/issues/481仍处于打开状态,此外还有一个关于 framelayout 列表项包装的查询 https://github.com/MvvmCross/MvvmCross/issues/539 - 所以请注意此区域可能会发生更改和更新 - 在不久的将来发布的版本可能会更改此处的默认外观。

关于android - MvvmCross Custom Spinner 保持默认外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21050347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com