我的
Android Project Build Target是5.1.1 API 22
这个应用程序似乎适用于除Lollipop之外的每个操作系统版本. Lollipop重新调整某些活动的高度(否定可滚动布局)以及破坏微调器.
单击微调器上的特定位置将在应用程序中输入不同的位置.我不知道为什么,我不知道如何解决这个问题.在某些情况下,即使您单击微调器上的按钮,它也会在微调器上注册最底部的可见按钮.对于一些微调器,它将不允许用户滚动.
我的一个故障微调器代码是这样的:
ArrayAdapter<String>adapterl4 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,hbmlevel){ public boolean isEnabled(int position){ displayData(position); return true; } }; selecthbm = (Spinner)findViewById(R.id.selecthbmlvl); adapterl4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); selecthbm.setAdapter(adapterl4); selecthbm.setOnItemSelectedListener(this);
我也尝试使用全局变量displayData函数,但我仍然得到相同的结果.
该应用程序是一个非常基本的应用程序,您可以下载here并在Java编译器合规性级别1.7上运行
我的xml的开头看起来像这样:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="fill_parent" xmlns:ads="http://schemas.android.com/apk/res-auto" android:fillViewport="true" android:background="#C2DFFF"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" >
displayData:
public void displayData(int pos){ herolvlTV.setText(hbmherolvl[pos]); hbmshardTV.setText(getResources().getString(R.string.shards)+" " +String.valueOf(hbmshards[pos])); hbmexpTV.setText(getResources().getString(R.string.maxexp)+" " +String.valueOf(hbmmaxexp[pos])); }
解决方法
这是问题所在:
ArrayAdapter<String>adapterl4 = new ArrayAdapter<String>(this,hbmlevel){ public boolean isEnabled(int position){ displayData(position); return true; } };
isEnabled函数根本不适用于Lollipop.解决方案是更改selecthbm.setOnItemSelectedListener(this); into selecthbm.setOnItemSelectedListener(new OnItemSelectedListener(){…});并完全删除isEnabled函数.
我不知道为什么isEnabled函数不起作用.如果有人想提供解释,我可以奖励赏金.