标签: android-spinner

从微调器下拉列表中删除边距

我有一个如下图所示的微调器;

在此输入图像描述

如何消除微调器及其下拉列表左侧x上的间隙 - 最好是一个适用于API8的解决方案,因为我试图尽可能降低我的应用程序要求.

我曾经假设这将是在spinners风格的layout_margin,但在阅读这个问题后,似乎这是不可能的.

在我的主题中我有;

<style name="AppTheme" parent="AppBaseTheme">        
        <item name="android:dropDownListViewStyle">@style/DropDownStyle</item>
    <item name="android:dropDownSelector">@style/DropDownStyle</item>                
</style>


<style name="DropDownTopStyle">

   <item name="android:clickable">true</item>
   <item name="android:background">@drawable/dropdowntop</item>

</style>

<style name="DropDownStyle">

   <item name="android:layout_width">fill_parent</item>
   <item name="android:layout_height">fill_parent</item> 
   <item name="android:layout_marginLeft">0dp</item> 
   <item name="android:layout_margin">0dp</item> 

   <item name="android:clickable">true</item>
   <item name="android:background">@drawable/dropdownback</item>
   <item name="android:popupBackground">@drawable/dropdownback</item>
   <item name="android:cacheColorHint">#FFF000</item>    
  </style>
Run Code Online (Sandbox Code Playgroud)

谢谢,托马斯

额外; 我可以看到可能有一种方法可以自己在代码中弹出一个弹出窗口 - 如果有必要,我可以以某种方式进入适配器弹出视图吗?(这是它显示的列表).尝试从头开始重新创建整个适配器行为似乎是一种可怕的方式 - 但如果我可以进入该视图并禁用正常的弹出行为,那么我可以创建自己的弹出窗口,而不会产生恼人的偏移.

android spinner android-layout android-spinner

21
推荐指数
1
解决办法
7936
查看次数

Android:将按钮绘制为微调器

我有一个自定义的android视图,它扩展了'Button'并充当了一个多级微调器 - 当它被按下时,它会显示一系列类似微调器的对话框,允许用户优化他们的选择.在这种情况下,它允许用户选择他们想要发生拾取的日,然后是小时,然后是分钟(以5分钟为间隔).当对话框未激活时,按钮上会显示当前选择的文本说明.

我想直观地指出用户可以通过按下按钮来改变选择,并认为微调器的外观正是我所需要的.我希望外观与设备上的其他微调器相同,并且能够轻松更改按钮上的文本,但我不确定如何在没有它的情况下实现这一点.我应该如何将按钮显示为与设备上其他微调器一致的微调器图标?

android android-widget android-button android-spinner

20
推荐指数
2
解决办法
2万
查看次数

自定义旋转器/下拉菜单

在应用程序Astrid Tasks中,有一个按钮.当您按下按钮时,会出现一个下拉菜单.

在此输入图像描述

在此输入图像描述

它基本上是一个微调器,但是以下拉列表的形式出现.

有谁知道怎么做类似的事情?这是一个我看不到的小部件吗?

android android-spinner drop-down-menu

19
推荐指数
1
解决办法
3万
查看次数

以编程方式创建一个微调器

我想在不使用xml的情况下创建一个微调器.我是android新手,我的知识有限.到现在为止,我有了这个代码(见上文),我希望我的微调器能够进入TabActivity的选项卡.没有明显的错误,但是当我打开我的活动时,标签是空的.我将不胜感激.

public class Search extends Activity {

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ArrayList<String> spinnerArray = new ArrayList<String>();
    spinnerArray.add("one");
    spinnerArray.add("two");
    spinnerArray.add("three");
    spinnerArray.add("four");
    spinnerArray.add("five");

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
    spinner.setAdapter(spinnerArrayAdapter);


}
Run Code Online (Sandbox Code Playgroud)

android spinner android-spinner

19
推荐指数
1
解决办法
3万
查看次数

不受欢迎的onItemSelected调用

我有36个微调器,我用一些值初始化了.我用过onItemSelectedListener.像往常一样,用户可以与这些微调器交互,触发onItemSeected函数.

一个问题是调用是在init期间进行的,但我在这里找到了它的解决方案并避免使用全局变量"count"并在onItemSelected中执行代码之前检查count> 36.

我的问题是:用户可以选择单击名为"Previous"的按钮,我必须重置一些微调器值.

我尝试在重置微调器之前将count的值更改为0,然后在重置后将其更改回37,但我已经明白只有在每个其他函数执行完毕后才调用onItemSelected,所以它被称为AFTER count即使微调器值在用户选择后立即设置,也会更改回37.

我需要重复刷新一些微调器而不触发onItemSelected函数.有谁能帮我找到解决方案?谢谢.

android android-spinner

19
推荐指数
3
解决办法
2万
查看次数

Android将箭头图像添加到微调器

我创建了一个用于旋转器的背景drawable.我想现在,但在这个背景中的箭头图像.我尝试过像android:drawableRight ="arrowimage"这样的东西,但这似乎没有显示任何东西.有谁知道如何在我的自定义背景中为旋转器包含图像?

android imageview android-layout android-spinner

19
推荐指数
1
解决办法
5万
查看次数

Android简单的微调项目

这个问题涉及到这个问题:android.R.simple_spinner_item

由于声誉不佳而无法发表评论,我还有一个问题:

如果我复制并粘贴android.R.simple_spinner_item布局,我会收到错误

android:layout_height="?android:attr/dropdownListPreferredItemHeight"
Run Code Online (Sandbox Code Playgroud)

说"错误:错误:属性不公开.(在'layout_height',值为'?android:attr/dropdownListPreferredItemHeight')."

我刚刚添加android:gravity="right"以使spinner_item对齐到右侧.

我该如何解决这个错误?

android android-layout android-spinner

19
推荐指数
2
解决办法
2万
查看次数

在没有自定义样式的Android Spinner中的项目之间添加更多空间?

我有一个Android应用程序我正在为一家混凝土公司写作,它将用于进出时钟.我已经使用了一些纺纱工具来选择工作地点和工作从下拉菜单,但我担心纺纱工具中的物品太靠近,员工难以选择合适的物品.

我想在微调器中的项目之间留出更多的空间,但是不想经历制作自定义样式的所有麻烦,因为我真的希望微调器的外观和行为与默认值完全相同,除非只需要更多的填充,并且需要为此制作自定义样式需要做很多工作.

是否有任何简单的改变,比如设置微调器的某些属性?我已经尝试将微调器类型设置为Dialog,但它只是显示具有相同间距的列表,只是没有附加到微调器控件.

java android spinner android-spinner

18
推荐指数
4
解决办法
3万
查看次数

更改工具栏中的微调器样式

我试图把一个微调器放在我Toolbar的旧ActionBar风格导航中,我的主题就是这个

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/color_primary</item>
    <item name="colorPrimaryDark">@color/color_primary_dark</item>
    <item name="colorAccent">@color/color_primary</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但我的微调器是黑色的,而所有其他图标和溢出菜单都是白色的,所以它看起来很糟糕

在此输入图像描述

我尝试使用它来改变微调器的样式

<style name="ToolbarSpinnerTheme" parent="Theme.AppCompat">
    <item name="android:spinnerItemStyle">@style/TextAppearanceSpinnerItem</item>
</style>

<style name="TextAppearanceSpinnerItem">
    <item name="android:textColor">#FFFFFF</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这就是我的工具栏的样式

<android.support.v7.widget.Toolbar
           android:id="@+id/toolbar"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:minHeight="?attr/actionBarSize"
           android:background="?attr/colorPrimary"
           app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
           app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

           <Spinner
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:id="@+id/modes"
               android:minWidth="150dp"
               android:gravity="bottom"
               style="@style/ToolbarSpinnerTheme"/>

       </android.support.v7.widget.Toolbar>


final Spinner mode = (Spinner)findViewById(R.id.modes);

    SpinnerAdapter mSpinner = ArrayAdapter.createFromResource(this, R.array.action_bar_spinner, android.R.layout.simple_spinner_dropdown_item);
    mode.setAdapter(mSpinner);
Run Code Online (Sandbox Code Playgroud)

但它总是保持黑色.如何在保持与主题相同的下拉样式主题的同时将微调器箭头和文本更改为白色Light

更新4.4箭头修复:

我让箭头变成白色的唯一方法是以编程方式添加微调器,而不是在xml中添加,因此它看起来像这样

final ArrayAdapter spinnerAdapter = ArrayAdapter.createFromResource(getSupportActionBar().getThemedContext(),
        R.array.main_navigation_list, R.layout.spinner_text);
spinnerAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
mNavigationTags = getResources().getStringArray(R.array.main_navigation_list);


mNavigationSpinner = new Spinner(getSupportActionBar().getThemedContext());
mNavigationSpinner.setAdapter(spinnerAdapter);

mNavigationSpinner.setOnItemSelectedListener(this);
mToolbar.addView(mNavigationSpinner)
Run Code Online (Sandbox Code Playgroud)

android android-spinner

18
推荐指数
3
解决办法
2万
查看次数

Android 6.0.1上的Spinner内部填充更大

介绍:

随着Android 6.0.1的新版本,似乎Android对Spinner组件进行了一些更改,因为默认情况下,胡萝卜周围的内部填充更大一些.

我在一个应用程序中注意到了这一点,我没有修改代码中的任何内容,只是更新了设备上的操作系统,但是微调器的大小不同.

情况:

我有两个旋转器,一个在另一个旁边RelativeLayout(介意其余组件,我添加了所有内容,所以你可以看到这部分布局 - 删除了完全不必要的属性或视图ID)

<RelativeLayout
    android:id="@+id/header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:id="@+id/container_for_buttons_on_the_right"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true">

        <!-- Buttons here-->
    </LinearLayout>

    <android.support.v7.widget.AppCompatSpinner
        android:id="@+id/spinner_1"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <ViewSwitcher
        android:id="@+id/spinner_switch"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:layout_toEndOf="@id/spinner_1"
        android:layout_toLeftOf="@id/container_for_buttons_on_the_right"
        android:layout_toRightOf="@id/spinner_1"
        android:layout_toStartOf="@id/container_for_buttons_on_the_right"
        android:inAnimation="@anim/fade_in"
        android:outAnimation="@anim/fade_out">

        <android.support.v7.widget.AppCompatSpinner
            android:layout_width="wrap_content"
            android:layout_height="match_parent" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <!-- ImageView properties are incomplete but I need it there.-->
    </ViewSwitcher>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

Spinner适配器用于该getView()方法的布局如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:orientation="horizontal"
    android:paddingLeft="8dp"
    android:paddingRight="8dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:ellipsize="end"
        android:gravity="center_vertical"
        android:singleLine="true"
        tools:text="Test" …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-spinner android-6.0-marshmallow android-6.0.1-marshmallow

18
推荐指数
1
解决办法
3253
查看次数