android 华为Mate 10 spinner 点击区域bug


1. testAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, dataList);

用自带的 ArrayAdapter 会导致点击区域变小

android 华为Mate 10 spinner 点击区域bug_第1张图片

2. testAdapter =new MyAdapter(this, dataList);

自定义 Adapter 之后点击区域变成正常


android 华为Mate 10 spinner 点击区域bug_第2张图片



源代码

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" />

更多相关文章

  1. Android GLSurfaceView在屏幕旋转后绘图区域异常的解决办法
  2. Android监听Dialog点击外部区域
  3. Android TextView控件文字添加下划线
  4. Android 三角标签(自定义Textview控件)
  5. Android ToggleButton控件的用法
  6. 两种方式使用android时间和日期控件
  7. android 下动态获取控件的id
  8. android动态生成控件
  9. Android 在TextView中加入多个点击文本区域

随机推荐

  1. Android查看apk文件的源代码(一)
  2. 挨踢部落故事汇(20):Android程序员的十大
  3. Okhttp 多网络通信选择实现方式
  4. Android开发者必知的Java知识(三) 结合注
  5. 为“分裂的”Android平台开发应用的一些
  6. Android(安卓)LBS系列06 位置策略(二)模拟
  7. android工程下assets与raw文件夹
  8. iOS不再美好 安卓收入逼近千万
  9. Android连接远程数据库(PHP+MYSQL)
  10. 全球87%安卓机暴露在风险中!最安全的手机