我有一个带有两个孩子的LinearLayout:一个TextView和一个Spinner。 LinearLayout获取了我在style.xml文件中定义的主题,它具有一个高程值来创建阴影。但是,出于某种原因,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下拉列表中有一行和右侧的微调箭头!
答案 0 :(得分:2)
在xml布局中,您还可以将高程设置为0。
<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:elevation="0dp"/>
如果无法识别,则在早期版本的android中忽略该元素。请注意,在某些设备上将这样的元素放在xml中会导致忽略无法识别的所有参数,因此不要将其作为第一个参数。