我正在使用网格视图,其中每个项目都包含一个图像和一些文本。文本的大小是动态的。遇到的问题是当文本太长时,它会被弃用。如果我使用高垂直间距,问题就会出现。但由于每次文本的长度都不同,我不能为所有项目使用高垂直间距。对于小文本没有问题。
我的 layout.xml 看起来像这样
<LinearLayout
android:id="@+id/list_container_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:padding="@dimen/widget_padding"
android:background="@color/content_layout_bg"
android:orientation="vertical" >
<GridView
android:id="@+id/grid_workflow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchMode="columnWidth"
android:numColumns="auto_fit"
android:verticalSpacing="@dimen/widget_padding" >
</GridView>
</LinearLayout>
我的适配器类如下所示:
public class WorkflowAdapter extends ArrayAdapter<String> {
private final Context context;
private final ArrayList<String> nameValues;
private ViewHolder viewHolder;
private final int resourceId;
public WorkflowAdapter(Context context, int resourceId,ArrayList<String> nameValues) {
super(context,resourceId,nameValues);
this.context = context;
this.nameValues = nameValues;
this.resourceId = resourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(resourceId, parent, false);
viewHolder = new ViewHolder();
viewHolder.label = (TextView) convertView.findViewById(R.id.txt_workflow_child);
convertView.setTag(viewHolder);
}
else
{
viewHolder = (ViewHolder) convertView.getTag();
}
String menuItem = nameValues.get(position);
viewHolder.label.setText(menuItem);
return convertView;
}
public class ViewHolder {
TextView label;
}
}
我的孩子 layout.xml 看起来像这样
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rounded_corner_ed"
android:orientation="vertical"
android:padding="@dimen/widget_padding" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/workflow_child_bg"
android:orientation="vertical"
android:padding="@dimen/widget_padding" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/widget_padding"
android:layout_marginRight="@dimen/widget_padding"
android:src="@drawable/icon64x64" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/txt_workflow_child"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/widget_padding"
android:text="TextView"
android:textColor="@color/text_color"
android:textSize="@dimen/text_size" />
顺便提一下,我正在从代码中动态设置网格视图的列宽。有什么帮助吗?