在Listview适配器中,基于条件的textview文本大小正在发生变化。
条件1:如果没有贴现值,则必须仅在(textview_price)中显示其价格并隐藏贴现值textview。(textview_price size = 18)
条件2:如果有折扣价的价值,则必须在(textview_price)和折扣价格textview_discounted中显示其价格。(textview_price size = 15,textview_discounted size = 18)。
如上图所示,我设置了textview_discount的可见性。 第一次它显示lsitview完成,因为我设置textview size.But当我滚动lsitview它的显示如上图像没有得到正确的文本大小。文本大小是= 18,其中文本是大的,一些文本视图大小是15.(问题在textView_price setTextSize中无法正常工作)
adapter.java代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_item_booking_slot_hours,parent ,false);
holder = new ViewHolder();
holder.tv_hours = (TextView) convertView.findViewById(R.id.tv_hour);
holder.textView_hour_am = (TextView) convertView.findViewById(R.id.textView_hour_am);
holder.textView_Price = (TextView) convertView.findViewById(R.id.textView_Price);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String stringPrice = "1500";
String stringDiscountedPrice = "1000"
if (entity.getPay().equals("0")) {
holder.textView_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 18);
holder.textView_Price.setText("Rs." + stringPrice);
holder.textView_Discounted_Price.setVisibility(View.GONE);
} else if (entity.getPay().equals("1")){
holder.textView_Discounted_Price.setVisibility(View.VISIBLE);
holder.textView_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 15);
holder.textView_Discounted_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 18));
holder.textView_Discounted_Price.setText("Rs." + stringDiscountedPrice);
holder.textView_Price.setText("Rs." + stringPrice, TextView.BufferType.SPANNABLE);
}
return convertView;
}
行的layout.xml:
<RelativeLayout
android:id="@+id/relativeLayout_hour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true">
<TextView
android:id="@+id/tv_hour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerInParent="false"
android:layout_centerVertical="true"
android:paddingBottom="5dp"
android:paddingLeft="5dp"
android:paddingTop="5dp"
android:singleLine="true"
android:text="05:00"
android:textColor="@drawable/selector_booking_hour_text"
android:textSize="22sp" />
<TextView
android:id="@+id/textView_hour_am"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="false"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/tv_hour"
android:gravity="center_vertical"
android:paddingBottom="5dp"
android:paddingTop="5dp"
android:singleLine="true"
android:text=" pm"
android:textColor="@drawable/selector_booking_hour_am"
android:textSize="18sp"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/relativeLayout_hour">
<TextView
android:id="@+id/textView_Price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_toLeftOf="@+id/textView_Discounted_Price"
android:singleLine="true"
android:text="Rs.4000"
android:textColor="@drawable/selector_booking_hour_text"
android:textSize="@dimen/text_slot_price" />
<TextView
android:id="@+id/textView_Discounted_Price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginLeft="2dp"
android:layout_toLeftOf="@+id/imageView_slot_arrow"
android:singleLine="true"
android:text="Rs.3000"
android:textColor="@drawable/selector_booking_hour_text_discounted"
android:textSize="@dimen/text_slot_discount_price"
/>
<ImageView
android:id="@+id/imageView_slot_arrow"
android:layout_width="wrap_content"
android:layout_height="12dp"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:layout_marginLeft="5dp"
android:layout_marginRight="2dp"
android:src="@drawable/next" />
</RelativeLayout>
</RelativeLayout>
任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
尝试此修改后的代码
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.list_item_booking_slot_hours,parent ,false);
holder = new ViewHolder();
holder.tv_hours = (TextView) convertView.findViewById(R.id.tv_hour);
holder.textView_hour_am = (TextView) convertView.findViewById(R.id.textView_hour_am);
holder.textView_Price = (TextView) convertView.findViewById(R.id.textView_Price);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if (entity.getPay().equals("0")) {
holder.textView_Price.setVisibility(View.GONE);
} else if (entity.getPay().equals("1")) {
holder.textView_Price.setVisibility(View.VISIBLE);
}
String stringPrice = "1500";
String stringDiscountedPrice = "1000"
if(!hasDiscount)//flag means your item has no discount
holder.textView_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 18);
holder.textView_Price.setText("Rs." + stringPrice);
holder.textView_Discounted_Price.setVisibility(View.GONE);
} else {
holder.textView_Discounted_Price.setVisibility(View.VISIBLE);
holder.textView_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 15);
holder.textView_Discounted_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 18));
holder.textView_Discounted_Price.setText("Rs." + stringDiscountedPrice);
holder.textView_Price.setText("Rs." + stringPrice, TextView.BufferType.SPANNABLE);
}
return convertView;
}
答案 1 :(得分:0)
当我按textView_Price.getTextSize()
记录textview_price文字大小时
我得到了行的“textview_price.getTextSize()= 36”和“textview_discount_price.getTextSize()= 36”的随机位置,并且只有textView_Price在该psotion行上显示,我随机获得“textView_Price.getTextSize()= 30”当我滚动lsitview时。
注意:我以textviewSize * 2的形式获取textview大小。 示例:如果textview textSize = 18则为18 * 2 = 36.0。为什么我不知道。
所以,最后在if {...} else {...}条件下我改变代码
if (entity.getPay().equals("0")) {
holder.textView_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 18);
holder.textView_Price.setText("Rs." + stringPrice);
holder.textView_Discounted_Price.setVisibility(View.GONE);
if(holder.textView_Price.getTextSize()==30.0)
{
holder.textView_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 18);
}
} else if (entity.getPay().equals("1")){
holder.textView_Discounted_Price.setVisibility(View.VISIBLE);
holder.textView_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 15);
holder.textView_Discounted_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 18));
holder.textView_Discounted_Price.setText("Rs." + stringDiscountedPrice);
holder.textView_Price.setText("Rs." + stringPrice, TextView.BufferType.SPANNABLE);
if(holder.textView_Price.getTextSize()==36.0)
{
holder.textView_Price.setTextSize(TypedValue.COMPLEX_UNIT_PX, 15);
}
}