我想使微调器带有提示,遵循一种解决方案,我正在将下拉列表高度的第一个元素设置为0,但是它被忽略并且第一个元素仍然可见并且高度> 0。 代码:
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, R.layout.spinner_item) {
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View v = super.getDropDownView(position, convertView, parent);
ViewGroup.LayoutParams lp = v.getLayoutParams();
v.setVisibility(View.VISIBLE);
if (position == 0) {
lp.height = 0; //doesn't affect anything
} else {
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
}
v.setLayoutParams(lp);
return v;
}
@Override
public boolean isEnabled(int position){
return position != 0;
}
};
spinnerAdapter.add(getHint());
spinnerAdapter.addAll(getItems());
spinnerView.setAdapter(spinnerAdapter);
当我尝试设置height = 1
时,它可以工作并且项目几乎消失了,但这并不是它应该工作的方式。
有没有可能发生这种情况的原因?有什么方法可以将高度精确设置为零吗?
答案 0 :(得分:0)
为微调器创建自定义适配器,并像这样更改代码,同时添加位置控制
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = flater.inflate(R.layout.list_itemslayout,parent, false);
}
RowItem rowItem = getItem(position);
TextView txtTitle = (TextView) convertView.findViewById(R.id.title);
txtTitle.setText(rowItem.getTitle());
ImageView imageView = (ImageView) convertView.findViewById(R.id.icon);
imageView.setImageResource(rowItem.getImageId());
return convertView;
}