Gridview多行Textview切断

我有一个GridView ,每个单元格下都有一个带有TextViewImageView 。 不幸的是,如果TextView有多行,文本会被截断。 我已经尝试了一切,但我找不到解决scheme。

看起来, GridView的行高是问题,而不是实际的文字,因为你可以在Textview看到一半的文字。

这是我的代码:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); GridView gridView = (GridView) findViewById(R.id.gridView1); gridView.setAdapter(new ImageAdapter()); gridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View v, int position, long id) { startActivity(new Intent(Main.this, Acronyms.class)); } }); } public class ImageAdapter extends BaseAdapter { private Integer[] iconImg = { R.drawable.acronyms, R.drawable.acronyms, R.drawable.acronyms }; private String[] iconTitle = { "Acronyms", "Cardiac Strips", "Test 3" }; public int getCount() { return iconImg.length; } public Object getItem(int arg0) { return null; } public long getItemId(int arg0) { return 0; } public View getView(int position, View convertView, ViewGroup parent) { View view = null; if (convertView == null) { LayoutInflater inflater = getLayoutInflater(); view = inflater.inflate(R.layout.icon, null); TextView textView = (TextView) view.findViewById(R.id.icon_text); textView.setText(iconTitle[position]); ImageView imageView = (ImageView) view.findViewById(R.id.icon_image); imageView.setImageResource(iconImg[position]); } else { view = convertView; } return view; } } 

main.xml中

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#a3e6ff" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:paddingBottom="10dp" android:paddingTop="10dp" android:shadowDx="0" android:shadowDy="0" android:shadowRadius="25" android:text="Example" android:textColor="#248fb7" android:textSize="40dp" android:typeface="serif" android:gravity="center_horizontal"/> <GridView android:id="@+id/gridView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:columnWidth="90dp" android:horizontalSpacing="10dp" android:numColumns="3" android:stretchMode="columnWidth" android:verticalSpacing="15dp" > </GridView> </LinearLayout> 

和我的icon.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/grid_icon_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" > <ImageView android:id="@+id/icon_image" android:layout_width="90dp" android:layout_height="wrap_content" /> <TextView android:id="@+id/icon_text" android:layout_width="90dp" android:layout_height="wrap_content" android:gravity="center_horizontal" android:maxLines="2" android:singleLine="false" android:text="Samples Samples" android:textColor="#FFFFFF" android:textSize="15dp" android:typeface="serif" /> </LinearLayout> 

这里是一个截图: 多行切断

[EDIT1]

您可以尝试使用一个RelativeLayout而不是一个线性布局的icon.xml。

如果这不起作用,然后我会移动到一个静态高度的TextView。 从看你的截图,看起来你会总是使用相同的图像,文本要么是1行或2。只是使文本高度静态,以允许2行。

[原文]我认为问题是在你的icon.xml的线性布局定义。 在你的定义中,你的布局具有“match_parent”作为宽度和高度参数。 你应该,因为这些基本上是gridview内的子视图是“wrap_content”。 这是我认为应该的

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/grid_icon_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" > <ImageView android:id="@+id/icon_image" android:layout_width="90dp" android:layout_height="wrap_content" /> <TextView android:id="@+id/icon_text" android:layout_width="90dp" android:layout_height="wrap_content" android:gravity="center_horizontal" android:maxLines="2" android:singleLine="false" android:text="Samples Samples" android:textColor="#FFFFFF" android:textSize="15dp" android:typeface="serif" /> </LinearLayout> 

我解决使用,当我定义它

  TextView.setLines(2); 

在XML文本视图是

  android:layout_width="wrap_content" android:layout_height="wrap_content"