Android spinner弹出式下拉列表位置和大小

Android spinner弹出式下拉列表位置和大小,android,android-layout,android-view,android-spinner,Android,Android Layout,Android View,Android Spinner,我设法改变了微调器的背景和它的弹出下拉背景。我可以调整弹出窗口android:dropDownHorizontalOffset和android:dropDownVerticalOffset。 我还有一个微调器项目的自定义布局 但是,我仍然坚持这种看法: 请注意这些项目是如何超出弹出式下拉列表的边界的。我怎样才能解决这个问题?有没有办法在物品的顶部和底部插入填充物 <Spinner android:id="@+id/branchesSpinner" andr

我设法改变了微调器的背景和它的弹出下拉背景。我可以调整弹出窗口
android:dropDownHorizontalOffset
android:dropDownVerticalOffset
。 我还有一个微调器项目的自定义布局

但是,我仍然坚持这种看法:

请注意这些项目是如何超出弹出式下拉列表的边界的。我怎样才能解决这个问题?有没有办法在物品的顶部和底部插入填充物

<Spinner
        android:id="@+id/branchesSpinner"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:background="@drawable/dropdown_base"
        android:dropDownHorizontalOffset="-5dp"
        android:dropDownVerticalOffset="50dp"
        android:paddingBottom="10dp"
        android:paddingLeft="20dp"
        android:popupBackground="@drawable/rounded_rectangle_4"
         />


微调器\项目\自定义\布局:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="10dp"
    android:textColor="@color/charcoal"
    android:textStyle="bold"
    tools:text="Select Branch"></TextView>


注意:我添加的背景是.PNG图像,而不是XML,因为您使用PNG文件作为微调器的弹出背景,所以有两个限制

  • 如果你在屏幕密度高的设备上运行应用程序,你的微调器背景可能会拉伸,看起来很难看
  • 您不能为弹出式背景设置填充,这就是为什么有时您的内容看起来不像您期望的那样好
解决方案:使用9-patch图像。你可以在Android官方网站上看一看关于如何使用的指南

我刚刚使用了
draw9patch
工具来编辑您的
圆角矩形4.png


您可以替换为当前背景,然后再试一次。

因为您使用png文件作为微调器的弹出背景,所以有两个限制

  • 如果你在屏幕密度高的设备上运行应用程序,你的微调器背景可能会拉伸,看起来很难看
  • 您不能为弹出式背景设置填充,这就是为什么有时您的内容看起来不像您期望的那样好
解决方案:使用9-patch图像。你可以在Android官方网站上看一看关于如何使用的指南

我刚刚使用了
draw9patch
工具来编辑您的
圆角矩形4.png


您可以使用当前背景进行替换,然后再试一次。

您需要为微调器创建自定义适配器。 然后,在适配器类的getDropDownView方法中,当位置为0时,需要使用下面的代码设置下拉项的上边距

public static void setMargins (View v, int l, int t, int r, int b) {
if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
    ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
    p.setMargins(l, t, r, b);
    v.requestLayout();
}
}

只要让你的逻辑来比较的位置下拉儿童。
请注意,您只需要设置上边距。

您需要为微调器创建自定义适配器。 然后,在适配器类的getDropDownView方法中,当位置为0时,需要使用下面的代码设置下拉项的上边距

public static void setMargins (View v, int l, int t, int r, int b) {
if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
    ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams();
    p.setMargins(l, t, r, b);
    v.requestLayout();
}
}

只要让你的逻辑来比较的位置下拉儿童。
请注意,您只需要设置上边距。

是否使用android:popupBackground为微调器使用自定义背景?@SonTruong是的,我也可以发布自定义背景。@SonTruong我用微调器xml更新了问题。您是否可以添加
圆角_矩形_4.xml
?是否为您的微调器使用自定义背景通过使用android:popupBackground微调器?@SonTruong是的,我还可以发布自定义背景。@SonTruong我用微调器xml更新了问题。您可以添加
圆角矩形4.xml