Gridview多行Textview截止

mee*_*epz 8 android gridview textview

我有一个GridView和每个单元有一个ImageViewTextView在它之下.不幸的是,如果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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

和我的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>
Run Code Online (Sandbox Code Playgroud)

这是一个截图: 多线切断

Bor*_*off 6

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

    TextView.setLines(2);
Run Code Online (Sandbox Code Playgroud)

在textml中的xml中

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
Run Code Online (Sandbox Code Playgroud)


tru*_*cks 2

[编辑1]

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

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

[原始] 我认为问题出在 icon.xml 的线性布局定义中。在您的定义中,您的布局具有“match_parent”作为宽度和高度参数。您应该将其设置为“wrap_content”,因为这些本质上是 gridview 中的子视图。这就是我认为应该是的

<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>
Run Code Online (Sandbox Code Playgroud)