Ben-Jコメントとhttp://stackoverflow.com/questions/33222207/how-to-add-padding-to-drop-down-list-that-we-get-by-clicking-on-spinner回答のおかげで、このコードを使用してThemeOverlay.AppCompat.Light
サブスタイルを使用して枠線を作成しました。
これにより、外側のリストオーバーレイのパディングが作成され、下位のオーバーレイバックグラウンドが表示されます。また、透明にならないようにリストアイテムの明示的な背景を設定する必要があります。
レイアウト/ main_layout.xml:
<Spinner xmlns:app="http://schemas.android.com/apk/res-auto"
app:popupTheme="@style/LangList_SpinnerPopupOverlay" />
値/のstyles.xml:
<style name="LangList_SpinnerPopupOverlay" parent="ThemeOverlay.AppCompat.Light">
<!-- border width -->
<item name="android:padding">1dp</item>
<!-- border color -->
<item name="android:background">#f00</item>
</style>
レイアウト/ spinner_list_item.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/itemText"
android:background="#fff"/>
</LinearLayout>
レイアウト/ spinner_view.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/itemText"/>
</LinearLayout>
CustomListAdapter.java:
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
public class CustomListAdapter extends ArrayAdapter<CustomListItem> {
private Context context;
public CustomListAdapter(Context context, List<CustomListItem> items) {
super(context, R.layout.spinner_list_item, items);
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// spinner layout (when closed)
int layoutId = R.layout.spinner_view;
return createView(position, convertView, parent, layoutId);
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
// dropdown list layout
int layoutId = R.layout.spinner_list_item;
return createView(position, convertView, parent, layoutId);
}
private View createView(int position, View convertView, ViewGroup parent, int layoutId) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(layoutId, null);
}
TextView itemText = convertView.findViewById(R.id.itemText);
CustomListItem item = getItem(position);
if (item != null) {
itemText.setText(item.getText());
}
return convertView;
}
}
レイアウトは、あなたが望むとおりにです。あなたは白い線であるイメージビューを持っています。垂直マージンを小さくしたい場合は、それを減らしてください。 –
私は期待を明確にするためにスクリーンショットを編集しました。赤く塗ってある国境を見てください – AnZ
ポップアップテーマを見てくださいhttp://stackoverflow.com/questions/33222207/how-to-add-padding-to-drop-down-list-that-weget-by-by-クリックスピード –