Gridview对齐元素

时间:2014-03-19 03:02:54

标签: java android gridview

我有grid view有7张图片,现在当我给它充气的时候,我就这样了 enter image description here

在这里,您可以看到图像按照普通视图对齐 但我不希望它像我想要的那样

enter image description here

底部图像对齐以形成金字塔或三角形类型 我如何在android ???

中的gridview中实现这一点

3 个答案:

答案 0 :(得分:2)

如果您尝试设置填充,那么您可以像这样缩小视图

if(position == 4){
    view.setPadding(50, 0, 0, 0);
}

enter image description here

所以我建议这样的事情

  1. 在xml中创建2个网格视图,使它们的对齐方式居中

    <TextView
        android:id="@+id/txtControl"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall" />
    
    <GridView
        android:id="@+id/gridView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/txtControl"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:numColumns="4" >
    </GridView>
    
    <GridView
        android:id="@+id/gridView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtControl"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:numColumns="3" >
    </GridView>
    

  2. 现在在您的主要活动中为每个

    创建2个字符串值

    公共类MainActivityWrapped扩展了Activity {

    static final String[] MOBILE_OS1 = new String[] { 
        "Android", "iOS", "Windows", "Blackberry"};
    static final String[] MOBILE_OS2 = new String[] { 
        "Android", "iOS", "Windows"};
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gridviewlayout);
        GridView gridView1 = (GridView) findViewById(R.id.gridView1);        
        gridView1.setAdapter(new ImageAdapterWrapped(this, MOBILE_OS1,gridView1));
        GridView gridView2 = (GridView) findViewById(R.id.gridView2);        
        gridView2.setAdapter(new ImageAdapterWrapped(this, MOBILE_OS2,gridView1));
    
    }
    

    }

    您可以创建2个适配器或控制相同的第一个适配器以便重复使用

    输出就像这样

  3. enter image description here

    enter image description here

答案 1 :(得分:0)

正如Takendarkk所说,你想要的布局不是网格

您应该能够通过嵌套线性布局实现您想要的效果:

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_gravity="center" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

       <!-- first 4 image views here -->

    </LinearLayout>

    <LinearLayout
        android:layout_gravity="center" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

       <!-- last 3 image views here -->

    </LinearLayout>

</LinearLayout>

答案 2 :(得分:0)

这是可行的,但解决方案很麻烦。

如果你知道行中有多少张图片,你可以计算出你的行的左右图像需要多少填充。

然后,在适配器的getView()中,您可以设置此填充轴承,由于视图在适配器中的回收方式,您需要为那些不适用的设备取消设置填充需要它。

如果您需要一些代码来更好地说明我提出的建议,请在评论中告诉我。