android 華為Mate 10 spinner 點擊區域bug
1.?testAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dataList);
用自帶的 ArrayAdapter 會導致點擊區域變小
2.?testAdapter =new MyAdapter(this, dataList);
自定義 Adapter 之后點擊區域變成正常
源代碼
public class MainActivityextends AppCompatActivity {
private SpinnermySpinner;
? ? private ListdataList =new ArrayList<>();
? ? private MyAdaptertestAdapter;
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
? ? ? ? for (int i =0; i <10; i++) {
if (i %2 ==0) {
dataList.add("西瓜");
? ? ? ? ? ? }else {
dataList.add("蘋果");
? ? ? ? ? ? }
}
mySpinner = findViewById(R.id.my_spinner);
//? ? ? ? testAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dataList);
//? ? ? ? testAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
? ? ? ? testAdapter =new MyAdapter(this, dataList);
? ? ? ? mySpinner.setAdapter(testAdapter);
? ? }
private class MyAdapterextends BaseAdapter {
private ListdataList;
? ? ? ? private ContextmContext;
? ? ? ? private MyAdapter(Context context, List stringList) {
this.dataList = stringList;
? ? ? ? ? ? this.mContext = context;
? ? ? ? }
@Override
? ? ? ? public int getCount() {
return dataList ==null ?0 :dataList.size();
? ? ? ? }
@Override
? ? ? ? public StringgetItem(int position) {
return dataList.get(position);
? ? ? ? }
@Override
? ? ? ? public long getItemId(int position) {
return position;
? ? ? ? }
@Override
? ? ? ? public ViewgetView(int position, View convertView, ViewGroup parent) {
View rootView;
? ? ? ? ? ? //如果沒有可以重用的控件
? ? ? ? ? ? if (convertView ==null) {
LayoutInflater inflater = LayoutInflater.from(mContext);
? ? ? ? ? ? ? ? rootView = inflater.inflate(R.layout.spinner_add_ticket_item, parent, false); //加載布局,創建View
? ? ? ? ? ? ? ? rootView.setTag(position);
? ? ? ? ? ? }else {
//控件己經被創建過,直接重用
? ? ? ? ? ? ? ? rootView = convertView;
? ? ? ? ? ? }
//依據位置提取相應的數據源對象
? ? ? ? ? ? String item =dataList.get(position);
? ? ? ? ? ? //獲取用于顯示內容的控件的引用
? ? ? ? ? ? TextView textView = (TextView) rootView.findViewById(R.id.text_view);
? ? ? ? ? ? //設置顯示內容
? ? ? ? ? ? textView.setText(item);
? ? ? ? ? ? return rootView;
? ? ? ? }
}
}
? ? xmlns:app="http://schemas.android.com/apk/res-auto"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent">
? ? ? ? android:id="@+id/my_spinner"
? ? ? ? android:layout_width="225dp"
? ? ? ? android:layout_height="wrap_content" />
? ? android:id="@+id/text_view"
? ? style="?android:attr/spinnerItemStyle"
? ? android:layout_width="match_parent"
? ? android:layout_height="wrap_content"
? ? android:layout_weight="1"
? ? android:ellipsize="marquee"
? ? android:singleLine="true"
? ? android:textAlignment="inherit" />