问题描述
我想在Spinner中删除特定的文本,我的代码看起来像下面的代码
packSpinner = findViewById(R.id.packSpinner);
String spinnerArray[] = new String[10];
for(int i=0; i<8; i++){
spinnerArray[i] = packArray[i] + mrpArray[i] + sellingPriceArray[i];
}
packSpinner.setAdapter(new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,spinnerArray));
在上述来自服务器的代码产品中,我已经将数据提取到packArray,mrpArray和sellingPriceArray中,现在我要删除mrp文本。
解决方法
您可以使用StrikethroughSpan
或仅设置textView.setPaintFlags(tv.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
,但是对于这两者,您都必须具有TextView
的访问权限,因此您无法通过默认ArrayAdapter
来达到目的,旨在显示没有自定义效果的简单列表(最常见的用法)。您必须扩展它并覆盖getView
方法。一些示例HERE,HERE和HERE
您可以使用
textview.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
适配器的特定位置
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,R.layout.spinner_text,list) {
@Override
public boolean isEnabled(int position) {
if (position == 0) {
return false;
} else {
}
}
@Override
public View getDropDownView(int position,View convertView,ViewGroup parent) {
View view = super.getDropDownView(position,convertView,parent);
TextView textview = (TextView) view;
if (position == 0) {
textview.setPadding(0,0);
textview.setTextColor(ContextCompat.getColor(RegistrationActivity.this,R.color.textColor_gray));
textview.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
} else {
textview.setPadding((int) getResources().getDimension(R.dimen.paddingformleft),(int) getResources().getDimension(R.dimen.paddingform),(int) getResources().getDimension(R.dimen.paddingform));
textview.setTextColor(ContextCompat.getColor(RegistrationActivity.this,R.color.dark_light_txtColor));
}
return view;
}
};
dataAdapter.setDropDownViewResource(R.layout.spinner_text);
spinner.setAdapter(dataAdapter);