我有一个带有两个孩子的 LinearLayout:一个 TextView 和一个 Spinner。获得了我在 style.xml 文件中定义的主题的 LinearLayout 具有用于创建阴影的高程值。然而,出于某种原因,Spinner 也出现了阴影。它似乎是从它的父母那里获得的。如果我从 LinearLayout 父级中删除 android:theme 属性,布局和 Spinner 上的阴影就会消失。
这里发生了什么?我希望我的 Spinner 没有阴影。
此外,如果我为 Spinner 制作自定义主题并将高度设置为 0dp,这将消除阴影,但 Spinner 会遇到其他布局问题。我知道我在这里做错了什么......
这是我的代码。
布局部分:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:background="@drawable/section_background"
android:orientation="vertical"
android:theme="@style/AppTheme.Section">
<TextView
android:id="@+id/titleCalendar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:text="Calendar"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold" />
<Spinner
android:id="@+id/calendarSpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"/>
</LinearLayout>
LinearLayout 的主题(@style/AppTheme.Section):
<style name="AppTheme.Section">
<item name="android:elevation">6dp</item>
</style>
用选项填充 Spinner 的 Java 代码:
String[] spinnerItems = new String[]{
"Hello",
"I Love You",
"This is a Test"
};
calendarSpinner = (Spinner) findViewById(R.id.calendarSpinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerItems);
adapter.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item );
calendarSpinner.setAdapter(adapter);
以下是它在设备上的外观:
现在,如果我向 Spinner 添加自定义主题...
<Spinner
android:id="@+id/calendarSpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:theme="@style/SpinnerTheme"/>
风格:
<style name="SpinnerTheme" parent="AppTheme.SpinnerBase">
<item name="android:elevation">0dp</item>
</style>
样式父(AppTheme.SpinnerBase):
<style name="AppTheme.SpinnerBase" parent="Widget.AppCompat.Spinner.Underlined">
</style>
这是我最终的结果:
Spinner 下拉菜单在右侧有一条线和一个微调箭头!