TextView と Spinner の 2 つの子を持つ LinearLayout があります。style.xml ファイルで定義したテーマを取得した LinearLayout には、影を作成するための高さの値があります。しかし、なぜかスピナーにも影ができてしまいます。親から取得しているようです。LinearLayout の親から android:theme プロパティを削除すると、レイアウトとスピナーの両方の影が消えます。
ここで何が起こっているのですか?スピナーに影がないようにしたいと思います。
また、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>
これが私が最終的にするものです:
スピナードロップダウンには、右側に線とスピナー矢印があります!