Gridview and its images is not fit for all screensize

前端 未结 1 1672
谎友^
谎友^ 2020-12-07 00:05

As in my title gridview and it is images are not get fit for all screens .

In my app I have 15 images and it is titles ,I wanna show it on a 3 column and 5 row form

相关标签:
1条回答
  • 2020-12-07 00:41

    So, the issue is with how you're creating the View in this method, and there's a couple of things going wrong:

    public View getView(int position, View convertView, ViewGroup parent) {
    
        LinearLayout linearlayout=new LinearLayout(mContext);
        ImageView imageView = new ImageView(mContext);
        TextView textView =new TextView(mContext);
        textView.setGravity(Gravity.CENTER);
        linearlayout.setOrientation(LinearLayout.VERTICAL);
        imageView.setImageResource(mThumbIds[position]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        imageView.setLayoutParams(new GridView.LayoutParams(230, 230));
        textView.setText(mThumbTxt[position]);
    
        linearlayout.addView(imageView);
        linearlayout.addView(textView);
        return linearlayout;
    }
    

    1) Right now, you're ignoring the convertView, so you're wasting GridViews recycling mechanism by not checking if that is null before instantiating the View.

    2) You're attaching GridView.LayoutParams to a child View nested within a LinearLayout. The LinearLayout should have GridView.LayoutParams, but the LinearLayout's children should have LinearLayout.LayoutParams.

    3) There's a difference between layout_gravity, and gravity -- you're using gravity, which for LinearLayout won't work as you think it should. (Unless in this context you change your TextView to be match_parent for width, but then that might mess other things up)

    I'd recommend ditching the dynamic creation and taking an XML inflation approach.

    0 讨论(0)
提交回复
热议问题