有一个LinearLayout L  宽高都是WRAP_CONTENT ,L的方向是HORIZONATL(水平)
有一个Button a、b、c  宽高都是WRAP_CONTENT 从数据库中动态读取他们的信息,包括背景贴图片名字,通过名字到Drawable文件夹里获取图片
然后将图片给每个Button,每个的Button的图片高一样,长不一样我现在简单地:
L.addView(a);
L.addView(b);
L.addView(c);结果是Button变形或者第三个Button被挤出屏幕,无法正常的显示在一行
我该如何设置,代码如何控制

解决方案 »

  1.   

    Button你设置的宽高都是wrap_content,那么肯定是跟你的图片大小有关了,你可以限定宽度和高度的大小
      

  2.   

    图片不会变形,但是不会把图片完整显示出来,你自己做的图片么,按照你的需求做相应大小分辨率的图片就可以了,你要是在网上找的话很难找到合适的,或者用Photoshop处理下!
      

  3.   


    int res_id= context.getResources().getIdentifier(pic_name,
    "drawable", "com.Test");//按图片名字获取图片的资源ID(R里的那个ID)
    Button b = new Button(context); Drawable d = this.getResources().getDrawable(pic_id);
    Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
    //获取图片的实际长宽
    float x = (dm.widthPixels * 100) / 480;//dm用于获取当前屏幕的宽,480是我的图片基于多宽屏幕设计的,这个数值从美工人员那里获得
    float h = (bitmap.getHeight() * x) / 100;
    float w = (bitmap.getWidth() * x) / 100; LinearLayout.LayoutParams btp = new LinearLayout.LayoutParams(
    (int) w, (int) h);
    b.setLayoutParams(btp);
    b.setBackgroundResource(pic_id);最终实现动态根据当前屏幕的分辨率,来控制图片的显示比例
      

  4.   

    RelativeLayout root; 属性设置为 MATCH_PARENT,MATCH_PARENT 
    LinearLayout r;属性设置为WRAP_CONTENT,WRAP_CONTENT
    Linearlayout linearView;属性设置为WRAP_CONTENT,WRAP_CONTENT
    ScrollView sv;属性设置为WRAP_CONTENT,WRAP_CONTENTRelativeLayout.LayoutParams params; ( 属性为MATCH_PARENT,MATCH_PARENT )
    加载顺序
    r.addView(linearView);
    sv.addView(r);
    params.addRule(RelativeLayout.BELOW, titleLayout.getId());//实际起作用了
    params.addRule(RelativeLayout.ABOVE, AdLayout.getId())//实际起作用了
    params.addRule(RelativeLayout.CENTER_HORIZONTAL)//但是这句不起作用,为什么啊root.addView(sv,params);如何让sv整体水平居中(CENTER_HORIZONTAL)