做购买物品的APP,有个功能是选择商品的,如图
1.5磅那个按钮是一个单选按钮,但是不固定的,可能多个,可能没有。如果超出一行则在第二行显示。以此类推。我的思路是,做固定个(如15)个按钮,先全部隐藏,然后看有多少个规格,然后显示对应个按钮出来。但是感觉这样太麻烦了。
求更好的思路,来实现这个功能。类似淘宝上购买东西选择不同尺寸或者规格那种功能。android动态按钮

解决方案 »

  1.   

    1、确定按钮宽度和高度的值【最佳比例的值】
    2、根据屏幕宽度按照最佳比例计算能放多少个按钮
    3、用linearlayout布局,按钮的layout_width这是成wrap_content,layout_weight都设置成一样,比如1,以便于瓜分剩下的位置,也就是按钮最终会比原来预计的宽度大。
    4、通过代码方式生成,没换一行生成一个linearlayout就可以了
      

  2.   


    那按钮的id怎么设置呢?比如说项目需要,按钮实际上是一个iamgeView,那么我每生产一个imageView,就给他设置imageView.setId(id)这样么?
      

  3.   


    那按钮的id怎么设置呢?比如说项目需要,按钮实际上是一个iamgeView,那么我每生产一个imageView,就给他设置imageView.setId(id)这样么?
    是的
    比如imageView.setId(100);
    可以通过findViewById(100)获取到
      

  4.   

    这个用gridview应该合适吧,数量添加的时候就notefydatasetchanged
      

  5.   

    LayoutInflater mLayoutInflater = (LayoutInflater) this
                    .getSystemService(LAYOUT_INFLATER_SERVICE);
    for (int i = 0; i < size; i++) {
        View child = (LinearLayout) mLayoutInflater.inflate(
                        R.layout.button, null);
        int j = i / 4;
        int k = i % 4;
        child.setPadding(k * 70, j * 60, 0, 0);
        parent.addView(child);
    }用一个LinearLayout就可以了。child是你单个的按钮,parent是一个ViewGroup。for循环里的代码意思是每个按钮的布局都用layout/button.xml,每行4个按钮,然后设置了按钮的padding,最后把按钮加到parent这个ViewGroup中,你可以通过parent.getChildAt(int index)来访问到对应的按钮。
      

  6.   

    谢谢,用gridview已经实现了项目需要的功能。
    哎,还是思想不够广泛,一看到这个功能就不停想着怎么去动态添加按钮,反而把基本的一些知识忘记!!!
      

  7.   


    那按钮的id怎么设置呢?比如说项目需要,按钮实际上是一个iamgeView,那么我每生产一个imageView,就给他设置imageView.setId(id)这样么?
    是的
    比如imageView.setId(100);
    可以通过findViewById(100)获取到
    谢谢啦,虽然这个没有研究透彻,但功能已经实现了!!!
      

  8.   

    谢谢回答了,功能已经实现,用4楼说的gridview实现了,呵呵!!!