标签: android-spinner

微调器 - 专注于第一项

我使用带游标适配器的下拉微调器.它包含例如1 - 100项.我选择例如项目50.项目被选中.下次当我打开微调器时,第一个可见行是第50项.当我打开微调器时,我将如何实现它将聚焦到第一个项目/第一个可见项目将是项目1?

我的意思是像列表中的自动滚动一样,因此下拉列表中的第一个可见项目是第一个而不是一个.

android android-widget android-layout android-spinner

17
推荐指数
1
解决办法
7399
查看次数

无法在getView中检查/取消选中CheckedTextView

我正在自定义ListView中加载手机通讯录.每行都是一个可检查的LinearLayout,包含CheckedTextView和另一个TextView.

我正在使用自定义ArrayAdapter提供列表视图.我的问题是我无法在getView()中控制CheckedTextViews.例如,当我尝试以下内容时

public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        if(row == null){            
            row = inflater.inflate(layout, parent, false);
        }

        CheckedTextView checkedTextView =  (CheckedTextView) row.findViewById(R.id.checkedTextView);
        checkedTextView.setText("A");
        checkedTextView.setChecked(true);
        return row;
    }
Run Code Online (Sandbox Code Playgroud)

每当我滚动列表视图时,应该检查每个文本视图,但这不会发生.谁能告诉我怎么做?

编辑:在getView()中检查它是很重要的,我不能在setListAdapter()之后检查所有内容

EDIT2:这是显示每行视图的xml文件

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

    <CheckedTextView
        android:id="@+id/checkedTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:checkMark="?android:attr/listChoiceIndicatorMultiple"
        android:paddingBottom="0dp"
        android:text="CheckedTextView"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/subTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Small Text"
        android:paddingTop="0dp"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</com.example.multiplecontacts.CheckableLinearLayout>
Run Code Online (Sandbox Code Playgroud)

CheckableLinearLayout是一个自定义布局,它扩展了LinearLayout并实现了Checkable,如前所述.我从这里拿走了它

android android-layout android-spinner android-checkbox

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

如何在Android中更改微调器的列表背景颜色

我正在动态创建一个新的微调器,如何更改列表背景颜色?

当前的背景颜色是深灰色:

两个布偶 当我将微调器的背景属性更改为白色时,我遇到了这种不必要的情况:

两个布偶 我希望它在活动中是透明的,只有当我打开微调器(按下它)时,我希望背景为白色.

这是我正在创建微调器的代码:

我正在创建适配器:

    mAdapter = new ArrayAdapter<String>(getApplicationContext(), 
                                     R.layout.spinner, R.id.Language, lang);
    LinearLayout layoutHolder = 
                         (LinearLayout)findViewById(R.id.RegisterFormLayout);
    Spinner spinner = new Spinner(getApplicationContext());
    LayoutParams layParams= new 
                Spinner.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,       
                                         ViewGroup.LayoutParams.WRAP_CONTENT);
    spinner.setLayoutParams(layParams);
    spinner.setAdapter(mAdapter); 
    spinner.setOnItemSelectedListener(new myOnItemSelectedListener());
    if (lang != null)
       spinner.setSelection(lang.intValue());
    spinnerList.add(spinner);
    layoutHolder.addView(spinner);
Run Code Online (Sandbox Code Playgroud)

我的spinner.xml布局是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" 
android:id="@+id/SpinnerLayout">

<TextView
    android:id="@+id/Language"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#ffffff"
    android:background="#00ffffff"
    android:padding="5dp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

android android-spinner

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

如何正确显示TextView下方的弹出菜单,类似于Spinner?

背景

我不得不创建一个类似微调器的视图,它具有以下行为:

  • textView中包含所选项目文本,右侧带有箭头图标,表示它是否处于"打开"状态.
  • 单击视图后,其下方会显示一个弹出菜单(不在顶部),显示可供选择的项目列表,并且还标记了所选项目.
  • 在popupWindow周围,有一种半透明的黑色.
  • 有一个自定义的动画来打开和关闭它.

问题

我已经成功制作了这个视图(下面的代码),但出于某种原因,在Android 7.1上,我让弹出菜单出现在视图的顶部(甚至重叠它和它上面的视图),而不是它下面,因为它应该.这是它的样子,它应该是什么样子:

在此输入图像描述

由于它是相当多的代码和资源,我把它全部放在一个Github存储库(这里),但这里是代码的主要部分(我在修复它的尝试是在注释中):

FullSizePopupSpinner.java

public class FullSizePopupSpinner extends android.support.v7.widget.AppCompatTextView {
    private static final long ANIMATION_DURATION = 150;
    private int[] mItemsTextsResIds, mItemsIconsResIds;
    private int mSelectedItemPosition = -1;
    private SpinnerPopupWindow mPopupWindow;
    private boolean mInitialized = false;
    private OnItemSelectedListener mOnItemSelectedListener;
    private Drawable mClosedDrawable;
    private Drawable mOpenedDrawable;

    public interface OnItemSelectedListener {
        void onItemSelected(FullSizePopupSpinner parent, int position, String item, int previousSelectedPosition);

        void onNothingSelected(FullSizePopupSpinner parent);
    }

    public FullSizePopupSpinner(final Context context) {
        super(context);
        init(context);
    }

    public FullSizePopupSpinner(final Context …
Run Code Online (Sandbox Code Playgroud)

android android-spinner android-popupwindow

16
推荐指数
1
解决办法
1324
查看次数

如何在微调器中更改下拉高度

我尝试了很多来改变微调器的下拉项目高度..但我无法得到一个很好的解决方案.. PLZ帮助我们..

这是一个代码loginactivityview.xml

       <Spinner
         android:id="@+id/spinnerFacility"
         android:layout_width="400dip"
         android:layout_height="50dip"
         android:layout_alignLeft="@+id/lpassword"
         android:layout_below="@+id/lpassword"
         android:layout_marginTop="32dip"            
         android:background="@drawable/location" 
         android:paddingLeft="10dip"               
         android:dropDownWidth="@style/dropDown"  
         android:minHeight="40dip"     
         android:typeface="monospace" />
Run Code Online (Sandbox Code Playgroud)

loginrowspinner.xml

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

  <TextView
    android:id="@+id/textViewRowFacility"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="left"
    android:paddingBottom="5dip"
    android:paddingLeft="6dip"
    android:paddingRight="6dip"
    android:paddingTop="5dip"
    android:text="Facility"
    android:textColor="#000000"
    android:textSize="20dip" >
</TextView>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何改变任何想法下降的高度..

android android-intent android-layout android-spinner

15
推荐指数
4
解决办法
5万
查看次数

如何在Android中向微调器添加图像

我想为spinner添加一个图像,我尝试过:

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/myImage" />
Run Code Online (Sandbox Code Playgroud)

但是使用这个代码,旋转器上的向下箭头的标志变得不可见,请告诉我如何解决这个问题!我想完全像这张图片一样

在此输入图像描述

android android-layout android-spinner

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

找不到类'android.widget.ThemedSpinnerAdapter'

我在一个片段中有一个方法调用,当用户点击按钮时打开一个AlertDialog,在该对话框中我想向国家显示一个Spinner(西班牙,意大利,法国......)

我的微调器代码如下:

RestCountries restCountries = new RestCountries();
    List<RestCountries.Datum>  countries = restCountries.data;
    String mCities ="";
    ArrayList<String> citiesArrayList = new ArrayList<>();

    for(RestCountries.Datum data : countries){
        mCities = data.name;
        citiesArrayList.add(mCities);
    }

    ArrayAdapter spinnerAdapter = new ArrayAdapter(getActivity(),android.R.layout.simple_spinner_dropdown_item,  citiesArrayList );
    mCountrySpinner.setAdapter(spinnerAdapter);
Run Code Online (Sandbox Code Playgroud)

打开对话框后,微调器显示为emphy.

在我得到的logcat上

Could not find class 'android.widget.ThemedSpinnerAdapter', referenced
from method
android.support.v7.widget.AppCompatSpinner$DropDownAdapter.<init>
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何想法

android android-fragments android-spinner

15
推荐指数
1
解决办法
9981
查看次数

忽略在创建时触发的OnItemSelectedListener

我正在创建一个spinner,我已经添加了一个OnItemSelectedListener.但是我注意到它会在创建时触发.现在我想知道是否有办法忽略/丢弃它.

我知道我可以使用一个boolean值,但这有点"脏".

android onitemclicklistener android-spinner

14
推荐指数
1
解决办法
5239
查看次数

在Android中替代高度飞溅的SPINNER CLASS

在我目前的项目中,我已经处理过spinner类,它几乎可以从各个方面进行定制.因此,当我处理它时,我已经获得了一些详细的方面.所以我将从它显示为什么它有缺陷的部分开始.

1_T在弹出窗口/布局/对话框created-shows(布局膨胀)事件中没有默认侦听器.有一些解决方法,如微调器上的ontouch监听器,然后检查是否在旋转器区域发生触摸完成,然后你知道弹出窗口将显示但仍然不可靠,因为你可以用异步任务填充弹出窗口.

2_再次选择相同索引时,不会触发项目选定事件.这真的很烦人,因为我可能会根据其他条件更新适配器,这将改变当前选择和列表顺序等...当然有一种解决方法,通过创建自己的微调器类并将其添加到xml中,如com.myproject.customspinner等......(Spinner:onItemSelected在所选项目保持不变时不被调用)

3_Spinner没有可用的功能 OnClickListener和OnItemLongTouchListener事件.

4_Changing Spinner DropDown列表divider元素的属性(如颜色)比更改所有dropdrown和spinner的背景视图本身需要更多的劳动,这是非常荒谬的.

5_Spinner这个名字本身很荒谬=))).

那么我可以用什么而不是Spinner?哪种方式最好?

android spinner alternate android-spinner

14
推荐指数
2
解决办法
6172
查看次数

如何根据其他微调器在两个不同活动中的位置来改变微调器的位置

我在两个不同的活动中有两个android spinner下拉列表.但是两个微调器都有来自同一个sourec的相同数据.我想根据第一个活动的位置改变第二个Activity的位置.如何解决这个问题?

更新的代码:

第一项活动:

public class ServiceRequest extends BaseActivity implements OnItemClickListener {
    private List<Item> customerList = new ArrayList<Item>();
    private SpinnerAdapter adapter;
    public static final String EXTRA_INTENT_CUSTOMER_LIST  ="extra_intent_customer_list";

    public static final String EXTRA_INTENT_SELECTED_ITEM = "extra_intent_selected_item";
    private List<Item> items;
    Spinner spin;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getLayoutInflater().inflate(R.layout.service_request, frameLayout);

       ;


    );
                    System.out.println("Selected item "    Button login = (Button) findViewById(R.id.booking);

        final String message = autoCompView.getText().toString();
        //Create the bundle


        login.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v) {
{

                    if(customerList.isEmpty()) return;
                    Item selectedItem = …
Run Code Online (Sandbox Code Playgroud)

android listadapter android-intent android-spinner android-bundle

14
推荐指数
1
解决办法
1500
查看次数