遇到在xml中直接设置padding失效和设置text位置失效:
解决:
mSpinner.setPadding(AppUtils.dip2px(this, 10), AppUtils.dip2px(this, 5), AppUtils.dip2px(this, 0), AppUtils.dip2px(this, 5));
mSpinner.setGravity(Gravity.CENTER);
想在下拉框的左边加上图标
尝试用:
Drawable icon=this.getResources().getDrawable(R.drawable.ic_aa);
icon.setBounds(0,0, 30,30);
mSpinner.setCompoundDrawables(icon,null,null,null);
但是在绘制的时候:(看NiceSpinner源码)
//会在跑一次以下代码:
protected void onVisibilityChanged(View changedView, int visibility) {
super.onVisibilityChanged(changedView, visibility);
this.arrowDrawable = this.initArrowDrawable(this.arrowDrawableTint);
this.setArrowDrawableOrHide(this.arrowDrawable);
}
private Drawable initArrowDrawable(int drawableTint) {
Drawable drawable = ContextCompat.getDrawable(this.getContext(), this.arrowDrawableResId);
if (drawable != null) {
drawable = DrawableCompat.wrap(drawable);
if (drawableTint != 2147483647 && drawableTint != 0) {
DrawableCompat.setTint(drawable, drawableTint);
}
}
return drawable;
}
private void setArrowDrawableOrHide(Drawable drawable) {
if (!this.isArrowHidden && drawable != null) {
**//到这里会把 spinnerNum.setCompoundDrawables(icon,null,null,null);给覆盖了 使他失效**
this.setCompoundDrawablesWithIntrinsicBounds((Drawable)null, (Drawable)null, drawable, (Drawable)null);
} else {
this.setCompoundDrawablesWithIntrinsicBounds((Drawable)null, (Drawable)null, (Drawable)null, (Drawable)null);
}
}
最终还是无法解决
可以在下拉框的选项(item)中加图片:
mSpinner.addOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
((TextView) view).setCompoundDrawablePadding(10);
((TextView) view).setCompoundDrawablesWithIntrinsicBounds(AppCompatResources.getDrawable(getApplicationContext(), R.drawable.ic_aa), null, null, null);
}
});