Gridview多行Textview截止

时间:2012-06-27 14:35:38

标签: android gridview textview

我有一个GridView,每个单元格下面都有一个ImageView TextView。不幸的是,如果TextView有多行,则文本会被截断。我已经尝试了一切,但我无法找到解决方案。

似乎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>

这是一个截图: Multi-line cut off

3 个答案:

答案 0 :(得分:6)

我决定使用,当我定义它时

    TextView.setLines(2);

在xml中,textview是

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

答案 1 :(得分:2)

<强> [EDIT1]

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

如果这不起作用,那么我将移动到静态高度TextView。通过查看截图,看起来您将始终使用相同的图像,文本将是1行或2.只需将文本高度设置为静态以允许2行。

<强> [原稿] 我认为问题出在你的icon.xml的线性布局定义中。在您的定义中,您具有“match_parent”作为width和height参数的布局。你应该,因为这些基本上是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>

答案 2 :(得分:0)

更改LinearLayout的ConstraintLayout。 确保您使用的是ConstraintLayout,如果可能,请通过LinearLayout进行更改。对于长文本,约束不是很好。