万事须己运,他得非我贤。这篇文章主要讲述Android:我应用中所有Spinners的全局风格相关的知识,希望能为你提供帮助。
我在Visual Studio 2017中使用Xamarin android。
我有一些现有的Spinners,它们是用xml布局创建的,它们都完美地工作,并且完全按照我希望它们的外观进行设计。这些代码通常是:
<
Spinner
android:spinnerMode="dialog"
android:id="@+id/SpnProject"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginBottom="8dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:background="@drawable/myspinner"
android:prompt="@string/project_prompt" />
这很好用,我的小背景图像都正确呈现..
现在我试图动态地创建一些其他的微调器,100%通过代码(不是布局XML)。我用我的代码动态地将它们放在LinearLayout中。
要创建其中一个,代码通常是:
Spinner CustomPicker = new Spinner(TheActivity);
List<
CustomAttributeOption>
AttOptions = db.GetCustomAttributeOptions(ThisAtt.AttributeId);
ArrayAdapter<
CustomAttributeOption>
AttOptionsAdapter = new ArrayAdapter<
CustomAttributeOption>
(Activity, Android.Resource.Layout.SimpleSpinnerDropDownItem, AttOptions);
CustomPicker.Adapter = AttOptionsAdapter;
customAttributeHolder.AddView(CustomPicker, StackerPosition);
这段代码完全有效,我的表单上会出现一个新的动态Spinner。但它有默认样式,我想应用与我的其他微调器相同的样式,具体来说,我希望这些动态微调器具有指定的高度= 40dp。我似乎无法使用代码在任何地方指定layoutHeight = 40dp?是否必须使用styles / xml完成???
我玩了很多尝试设置主题并为我的Activity中的所有Spinners指定样式,但该应用程序不会构建或运行。
理想情况下,我真的想从布局XML中删除layout_height和layout_width值,并将它定义为ONCE,就像在全局风格中为我的ENIRE PROJECT中的所有SPINNERS一样。
可以这样做,还是你被迫根据具体情况为每个小部件指定宽度和高度?
答案您可以使用布局inflater以“自动魔术”应用您可以定义的样式。
让我们假设您的
Spinner
具有“全局”风格:<
style name="MySpinnerStyle" parent="android:Widget.Spinner">
<
item name="android:spinnerMode">
dialog<
/item>
<
item name="android:layout_width">
fill_parent<
/item>
<
item name="android:layout_height">
40dp<
/item>
<
item name="android:layout_marginBottom">
8dp<
/item>
<
item name="android:paddingTop">
8dp<
/item>
<
item name="android:paddingBottom">
8dp<
/item>
<
item name="android:paddingStart">
8dp<
/item>
<
item name="android:paddingEnd">
8dp<
/item>
<
item name="android:background">
@drawable/myspinner<
/item>
<
item name="android:prompt">
@string/project_prompt<
/item>
<
/style>
为您创建的使用全局Spinner样式的动态Spinner创建一个独立的
Layout
<
?xml version="1.0" encoding="UTF-8" ?>
<
Spinner xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/masterSpinner"
style="@style/MySpinnerStyle" />
【Android(我应用中所有Spinners的全局风格)】现在,不是实例化新的
Spinner
,而是扩展布局,并且将分配所有相关属性:var spinner = LayoutInflater.Inflate(Resource.Layout.Spinner, rootLayout, false) as Spinner;
spinner.Adapter = new ArrayAdapter<
string>
(this, Android.Resource.Layout.SimpleSpinnerItem, new string[] { "Stack", "Over", "Flow" });
customAttributeHolder.AddView(spinner, StackerPosition);
推荐阅读
- 在android加载布局时出现了一些错误,但在运行时没有效果
- 将Visual Studio 2012附加到在Android移动设备上运行的Unity游戏中,以进行调试
- 在android studio中build.gradle中使用flavor维度
- 如何调试Google Apps脚本(又名Logger.log登录到哪里())
- 如何解决TCPDF错误(一些数据已经输出,无法发送PDF文件)
- 如何在Windows中配置NetBeans以将LESS文件自动编译为CSS
- 如何在Xampp Server中启用gzip压缩
- 如何解决错误1115(42000)(在PHPMyAdmin中导入SQL文件时,未知字符集:’utf8mb4′)
- 如何在不使用jQuery的情况下使用Bootstrap前端框架(3和4)