Android 我的微调器视图具有从其父视图获取的高程阴影

Android 我的微调器视图具有从其父视图获取的高程阴影,android,android-layout,android-spinner,android-theme,android-elevation,Android,Android Layout,Android Spinner,Android Theme,Android Elevation,我有一个线性布局和两个孩子:一个TextView和一个Spinner。LinearLayout获取了我在style.xml文件中定义的主题,它有一个高程值来创建阴影。但是,由于某些原因,微调器也会得到阴影。它似乎是从它的母公司那里得到的。如果我从LinearLayout父级中删除android:theme属性,则布局和微调器上的阴影都会消失 这是怎么回事?我希望我的旋转器没有阴影 此外,如果我为微调器创建一个自定义主题,并将标高设置为0dp,这将消除阴影,但微调器会遇到其他布局问题。我知道我做错

我有一个线性布局和两个孩子:一个TextView和一个Spinner。LinearLayout获取了我在style.xml文件中定义的主题,它有一个高程值来创建阴影。但是,由于某些原因,微调器也会得到阴影。它似乎是从它的母公司那里得到的。如果我从LinearLayout父级中删除android:theme属性,则布局和微调器上的阴影都会消失

这是怎么回事?我希望我的旋转器没有阴影

此外,如果我为微调器创建一个自定义主题,并将标高设置为0dp,这将消除阴影,但微调器会遇到其他布局问题。我知道我做错了什么

这是我的密码

布局部分:

        <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):


6dp
用选项填充微调器的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);
String[]spinnerItems=新字符串[]{
“你好”,
“我爱你”,
“这是一个测试”
};
calendarSpinner=(Spinner)findViewById(R.id.calendarSpinner);
ArrayAdapter=新的ArrayAdapter(这个,android.R.layout.simple\u微调器项目,微调器项目);
adapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
calendarSpinner.setAdapter(适配器);
以下是它在设备上的外观:

现在,如果我向微调器添加自定义主题

<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>

0dp
样式父级(AppTheme.SpinnerBase):


以下是我的结论:



微调器下拉列表的右侧有一条线和一个微调器箭头

在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格式放置这样的元素将导致所有未识别参数后面的参数都将被忽略,因此不要将其作为第一个参数。

我肯定会继续使用它。我害怕在xml中直接使用它,以免在旧设备上出错。但如果它被忽视了,我的担心就会减轻!@ThMBc提供的解决方案似乎可以纠正出现的阴影。但是,有人能解释为什么微调器视图投射阴影,即使它本身没有高程值吗?第一个示例中的高程:视图在xml中声明时使用父视图的样式进行膨胀:因为您声明了高程,所以它得到了高程。选择器本身的提升是因为它是一个新的“窗口”,一个对话框或弹出窗口,在它自己的生命周期中,默认实现显示阴影,甚至在Kitkat和更早的版本上
 <style name="AppTheme.SpinnerBase" parent="Widget.AppCompat.Spinner.Underlined">
 </style>
 <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"/>