以编程方式删除GridView周围的额外空间

Mag*_*ahn 8 android gridview

我正在尝试GridView在我的java类中以编程方式进行编译,一切正常.问题是周围自动生成的5像素填充GridView.在xml中我设法使用以下方法删除它:

android:listSelector="@null"
Run Code Online (Sandbox Code Playgroud)

但我无法在java中做任何类似的事情.我尝试了一些解决方法,比如使GridView实际屏幕大10像素,没有运气.

有没有人有这个代码?

编辑:

我的答案并没有解决问题.仍然有赏金.这是我的GridView代码:

    GridView gridView = new GridView(this);
    gridView.setNumColumns(someInt);
    gridView.setAdapter (new MyCustomAdapter(this));
    gridView.setLayoutParams(new GridView.LayoutParams(
            customValue,
            LayoutParams.FILL_PARENT,
            Gravity.CENTER_HORIZONTAL)
    );
Run Code Online (Sandbox Code Playgroud)

Ron*_*nie 6

  • 确保填充在具有不同密度的屏幕上显示相同的一种方法是将其转换为DIP单位.

    int padding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, -5, 
                                        getResources().getDisplayMetrics());
    
    Run Code Online (Sandbox Code Playgroud)
  • 您可以尝试的其他方法是在xml中定义null drawable.

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <drawable name="null_drawable">@null</drawable>
        ...
    </resources>
    
    Run Code Online (Sandbox Code Playgroud)

    然后打电话 setSelector(R.drawable.null_drawable);

更新:

  • GridView在自己的xml中定义并对其进行充气.

    布局/ mygrid.xml

    <?xml version="1.0" encoding="utf-8"?>
    <GridView 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:listSelector="@null"/>
    
    Run Code Online (Sandbox Code Playgroud)

    在java中,

    GridView gridView = (GridView)inflater.inflate(R.layout.mygrid, null);
    gridView.setLayoutParams(new GridView.LayoutParams(customValue, 
                            LayoutParams.FILL_PARENT));
    gridView.setNumColumns(someInt);
    gridView.setAdapter (new MyCustomAdapter(this));
    
    Run Code Online (Sandbox Code Playgroud)


Mag*_*ahn 2

通过以下方式解决了它:

    gridView.setPadding(-5, 0, -5, 0);
Run Code Online (Sandbox Code Playgroud)

但不同的屏幕需要不同的填充。但这并不是一个完整的解决方案。该代码的功能修改将被接受。