8

我有一个GridView,每个单元格下面都有一个ImageViewwith 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;
    }
}

主要的.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>

这是一个屏幕截图: 多线切断

4

3 回答 3

6

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

    TextView.setLines(2);

在 xml 中,textview 是

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
于 2012-07-16T18:48:13.687 回答
2

[编辑1]

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

如果这不起作用,那么我将移至静态高度 TextView。从您的屏幕截图来看,您似乎将始终使用相同的图像,并且文本将是 1 行或 2 行。只需将文本高度设为静态以允许 2 行。

[ORIGINAL] 我认为问题出在 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>
于 2012-06-27T14:50:24.923 回答
0

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

于 2019-05-22T03:50:47.753 回答