【问题标题】:How to add space between custom spinner items?如何在自定义微调器项目之间添加空间?
【发布时间】:2015-12-04 20:40:50
【问题描述】:

我按照本教程 Android Widgets: Custom Spinner in Android 制作了一个自定义 Spinner,其中包含一个图像和一个文本视图作为项目,但由于某种原因,项目之间没有空格。

目前它没有被点击时看起来像这样(这很好):

当我点击它时,它看起来像这样:

虽然默认的项目之间有足够的空间:

这是微调器的xml 代码:

<Spinner
    android:id="@+id/languageSpinner"
    style="@android:style/Widget.Holo.Light.Spinner"
    android:layout_width="110dp"
    android:layout_height="40dp"
    android:layout_marginStart="30dp"
    android:prompt="@string/select"
    android:spinnerMode="dropdown"/>

这是自定义行布局的 xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/language"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:layout_gravity="center_vertical"
        android:textColor="@color/black"
        android:layout_marginStart="10dp"
        android:layout_marginBottom="2dp"/>
</LinearLayout>

有人知道我做错了什么吗?

编辑:经过一些建议,项目之间的空间被添加,但是在微调器中选择的项目无法正确看到,我附上一张图片:

【问题讨论】:

  • 尝试填充它会起作用
  • @Lakhan 如果我添加填充,它还会将它添加到第一项上,然后在未单击时更改外观。
  • 你申请了 marginTop 吗?
  • Check - 使用透明分隔线。
  • 您还可以为微调器提供选中 - 未选中的布局。

标签: android spinner android-spinner


【解决方案1】:

自定义行布局:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <LinearLayout 
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp">
        <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/language"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:layout_gravity="center_vertical"
            android:textColor="@color/black"
            android:layout_marginStart="10dp"
            android:layout_marginBottom="2dp"/>
    </LinearLayout>
    </LinearLayout>

【讨论】:

    【解决方案2】:

    您只需要在您的文本视图中添加属性 lineSpacingExtra

    例子:

    <TextView
            android:id="@+id/language"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:layout_gravity="center_vertical"
            android:textColor="@color/black"
            android:layout_marginStart="10dp"
            android:layout_marginBottom="2dp"
            android:lineSpacingExtra="3dp/>
    

    --> android:lineSpacingExtra="3dp

    【讨论】:

    • 我也会使用该属性。不错的一个;)
    • 确实不错,但不幸的是,当我添加它时没有任何变化,即使我将其增加到 50dp。
    • 你可以尝试在你的 LinearLayout 中添加 paddin。示例:android:padding="5dp"
    【解决方案3】:

    试试这个方法

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    
    
        <ImageView
            android:id="@+id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:layout_marginBottom="10dip"
            android:layout_marginLeft="15dip"/>
    
    
        <TextView
            android:id="@+id/country"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dip"
            android:layout_marginBottom="10dip"
            android:layout_marginTop="10dip"
            android:textColor="#000000" />
    
    
    </LinearLayout>
    

    【讨论】: