需求描述:
ListView中的item中有一个TextView,该TextView的宽度确定,根据要显示的内容长度动态调整文字的显示方式:不超过1行居中显示;超过1行的话无论第二行有几个字,左对齐显示。效果图如下所示(这里只找到了居中的示例):
刚开始写的item布局文件如下:
android:id="@+id/fl_root"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
android:id="@+id/iv_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/friendshipislandbg4"
android:riv_border_width="0dp"
android:riv_corner_radius="8dp" />
android:id="@+id/tv_name"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="bottom"
android:background="@drawable/bs_school_name_bg"
android:gravity="center"
android:maxLines="2"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:textColor="#ffffff"
android:textSize="16sp" />
动态代码调整TextView的Gravity代码如下:
@Override
public void convert(ListviewViewHolder holder, TempDataBean item) {
FrameLayout flRoot = (FrameLayout) holder.getView(R.id.fl_root);
//动态调整GridView中每一个item的大小,防止图片大小不同导致每一个item的大小不同
ViewGroup.LayoutParams params = flRoot.getLayoutParams();
params.height = displayWidth / 2 - MyUtils.dip2px(ctx, 18);
params.width = displayWidth / 2 - MyUtils.dip2px(ctx, 18);
flRoot.setLayoutParams(params);
flRoot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(BSItemActivity.this, BSDetailActivity.class));
}
});
//显示图片
mImageLoader.displayImage(item.getSchoolImage(), (ImageView) holder.getView(R.id.iv_school_image), options, mImageLoadingListener);</