如何在GridView项目Android下面添加标签?

时间:2015-05-24 13:08:50

标签: android gridview textview launcher

现在我正在开发一个启动器应用程序,我在其中创建了一个GridView,它从设备中获取所有已安装的应用程序。但是只有应用程序图标,没有应用程序名称。我想在其下方放置应用名称,因此我尝试将TextView放在我的应用图标ImageView下方,但我的应用崩溃了。任何想法我该如何解决?这是我的代码:非常感谢你!

public View getView(int position, View convertView, ViewGroup parent) {
            ImageView i;

            if (convertView == null) {
                i = new ImageView(Apps.this);
                i.setScaleType(ImageView.ScaleType.FIT_CENTER);
                i.setLayoutParams(new GridView.LayoutParams(93, 93));
                i.setPadding(15, 15, 15, 15);


            } else {
                i = (ImageView) convertView;
            }

            ResolveInfo info = mApps.get(position);
            i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));

            return i;
        }

2 个答案:

答案 0 :(得分:1)

使用view而不是构建包含TextViewImageView的{​​{1}}。您只需实施一个CompoundDrawable并使用所需图标设置TextView。这将完成这项工作。

来自XML文件

DrawableTop

或者您可以使用以下方式以编程方式执行此操作:

<TextView
    android:id="@+id/my_textview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:drawableTop="@drawable/my_icon"
    android:gravity="center"
    />

答案 1 :(得分:1)

只需使用TextView作为图像容器,使用复合drawable http://developer.android.com/reference/android/widget/TextView.html#setCompoundDrawablesWithIntrinsicBounds(int,%20int,%20int,%20int)

因此,您将1 View to replace 2 ones设置为 UI简化性能改进,作为副作用。

一个小例子:

public View getView(int position, View convertView, ViewGroup parent) {
        TextView t;

        if (convertView == null) {
            t = new TextView(Apps.this);
            t.setLayoutParams(new GridView.LayoutParams(93, 93));
            t.setPadding(15, 15, 15, 15);

            ResolveInfo info = mApps.get(position);
            Drawable drw = info.activityInfo.loadIcon(getPackageManager());

            t.setCompoundDrawablesWithIntrinsicBounds(null, drw, null, null);
            //t.setText("Some Text");
            t.setText(info.activityInfo.loadLabel(getPackageManager()).toString());

        } else {
            t = (TextView) convertView;
        }

        return t;
    }

<强> [编辑]

返回视图(t,TextView)后,您可以使用getCompoundDrawables()获取可绘制内容:http://developer.android.com/reference/android/widget/TextView.html#getCompoundDrawables()