如何根据文本宽度获得具有可变列宽的网格布局?

时间:2016-12-13 07:58:16

标签: android android-layout android-gridview android-gridlayout

我正在使用网格布局来显示一组数据,我无法使列宽自动调整,我尝试在xml文件中使用mGridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH) mGridView.setColumnWidth(textView.getWidth()) android:stretchMode="columnWidth"但是什么都没有。这是我的xml文件

grid_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/grid_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:numColumns="6"
    android:stretchMode="columnWidth"
    android:columnWidth="60dp"
    android:background="#FFFFFF"
     ></GridView>

这可能是主要的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp" >
    <TextView
        android:id="@+id/grid_item_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+id/label"
        android:layout_marginTop="5px"
        android:textSize="6sp" >
    </TextView>
</LinearLayout>

这是我尝试在适配器

中设置列宽的地方
public String[] mText =new String[] {
            "No", "Item Name","Quantity", "Price","Units","Amount",
            "1","Dhara Sunflower Oil","1 ltr","₹ 110","2","₹ 220",
            "2","MDH Sambhar Masala","100 gms","₹ 65","1","₹ 65",
            "3","India Gate Basmati Rice","1 kg","₹ 110","1","₹ 165"

    };

    // Constructor
    public ImageAdapter(Context c){
        mContext = c;
    }

    @Override
    public int getCount() {
        return mText.length;
    }

    @Override
    public Object getItem(int position) {
        return mText[position];
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);


        if(convertView==null){
            gridView = new View(mContext);
            gridView = inflater.inflate(R.layout.main, null);
            mGridView = (GridView) parent.findViewById(R.id.grid_view);
            textView = (TextView) gridView
                    .findViewById(R.id.grid_item_label);
            textView.setText(mText[position]);

            gridView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @Override
                public void onGlobalLayout() {

                    gridView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    gridView.getWidth(); //height is ready
                    mGridView.setColumnWidth(textView.getWidth());
                    Log.i("TAG","TAG"+(textView.getWidth()));
                }
            });

        }else {
            gridView = (View) convertView;
        }
        return gridView;

    }

当我在模拟器上运行它时看起来像这样,我不想在第一列和第二列之间有空格,我的意思是它应该像包装内容

enter image description here

0 个答案:

没有答案