【问题标题】:Android Spinner items spaceAndroid Spinner 项目空间
【发布时间】:2017-01-12 02:51:26
【问题描述】:

我的应用中有两个微调器。一个微调器从 XML 文件静态加载列表项以进行显示。其他微调器从数据库中获取字符串列表并显示。我对两个微调器使用相同的 XML 属性。但是两个项目之间的间距是不同的。具有静态字符串列表的微调器在项目之间具有更大的间距。从数据库加载项目的微调器具有某种包装高度。这些项目彼此靠近,使得用户难以选择。 这个问题有什么解决办法吗?

  <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <Spinner
        android:id="@+id/spinner3"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" />

java 代码

static_sp = (Spinner) findViewById(R.id.spinner1);        
    List<String> array_karant = Arrays.asList(getResources().getStringArray(R.array.karant_list));
    ArrayAdapter<String> karant_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, array_karant);
    karant_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    static_sp.setAdapter(karant_adapter);
    static_sp.setSelection(0);
    static_sp.setOnItemSelectedListener(new select_karant());


    database_sp = (Spinner) findViewById(R.id.spinner3);  
    return_likes = db.getAllLikeList();
    ArrayAdapter<String> like_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, return_likes);
             like_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    database_sp.setAdapter(like_adapter);
    database_sp.setOnItemSelectedListener(new select_like());


图片链接在这里:

谢谢, 萨米尔

【问题讨论】:

  • 你必须创建自定义微调器

标签: android xml spinner


【解决方案1】:

创建一个布局 simple_spinner_item

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

并更改您的代码

static_sp = (Spinner) findViewById(R.id.spinner1);        
List<String> array_karant = Arrays.asList(getResources().getStringArray(R.array.karant_list));
ArrayAdapter<String> karant_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, array_karant);
karant_adapter.setDropDownViewResource(R.layout.simple_spinner_item);
static_sp.setAdapter(karant_adapter);
static_sp.setSelection(0);
static_sp.setOnItemSelectedListener(new select_karant());


database_sp = (Spinner) findViewById(R.id.spinner3);  
return_likes = db.getAllLikeList();
ArrayAdapter<String> like_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, return_likes);
         like_adapter.setDropDownViewResource(R.layout.simple_spinner_item);
database_sp.setAdapter(like_adapter);
database_sp.setOnItemSelectedListener(new select_like());

如果你想要间距,你必须在文本视图中添加填充

【讨论】:

  • 下拉的设计和simple_spinner_item的设计一样。所以你可以改变你想要的下拉菜单的设计。
【解决方案2】:

创建一个布局 simple_spinner_item.xml,像这样

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:textAppearance="?android:attr/textAppearanceListItemSmall"
 android:gravity="center_vertical"
 android:paddingStart="?android:attr/listPreferredItemPaddingStart"
 android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
 android:background="?android:attr/activatedBackgroundIndicator"
 android:minHeight="?android:attr/listPreferredItemHeightSmall"
 android:layout_marginTop="0dp"
 android:layout_marginBottom="0dp"/>

最后两行是在每个项目之间添加空格,然后你已经修改了你的类,在这一行:

karant_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, array_karant);

因为您使用的是android布局,我们需要使用我们的布局(删除android这个词。):

karant_adapter = new ArrayAdapter<String>(this, R.layout.simple_spinner_item, array_karant);

【讨论】:

    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2017-05-31
    相关资源
    最近更新 更多