在LinearLayouts之间添加空间

时间:2018-09-07 12:23:45

标签: java android

我正在尝试列出如下数据库项目。

   for (int i=0; i < jArray.length(); i++)
           {

               JSONObject row = jArray.getJSONObject(i);

               LinearLayout ll = new LinearLayout(MainActivity.this);
               ll.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,100));

               Button btn = new Button(MainActivity.this);
               //btn.setText(row.getString("subject"));
               btn.setText(String.valueOf(i));
               btn.setLayoutParams(new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,(float)0.8));


               File imgFile = new  File(file_path);

               Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());

               ImageView iv = new ImageView(MainActivity.this);
               iv.setScaleType(ImageView.ScaleType.FIT_XY);
               iv.setImageBitmap(myBitmap);
               iv.setLayoutParams(new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,(float)0.2));




               ll.addView(btn);
               ll.addView(iv);

               LinearLayout sv = findViewById(R.id.sv_layout);
               sv.addView(ll);

           }

结果是这样的: List Of Items

但是我想在线性布局之间留出空间并使图像高度缩短为与按钮高度相等 [see this]

我该如何实现?谢谢

3 个答案:

答案 0 :(得分:1)

请尝试使用此代码

  LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 100);
                    params.setMargins(0, 5, 5, 10);
                    ll.setLayoutParams(params);

您可以在此行params.setMargins(0, 5, 5, 10);

中添加特定的边距

答案 1 :(得分:1)

以水平方向的线性布局拍摄按钮和图像。将“按钮”和“图像视图”高度设置为包装内容。现在,为线性布局之间的间隙提供适当的边距

答案 2 :(得分:0)

在布局参数中设置边距,然后将其传递给ImageView对象。

  LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,(float)0.2);
            int dp = getDps(8);
            layoutParams.setMargins(0,dp,0,dp);
            iv.setLayoutParams(layoutParams);

函数getDps():

public int getDps(int sizeInDp){
        float scale = getResources().getDisplayMetrics().density;
        return  (int) (sizeInDp*scale + 0.5f);
    }

这看起来像:enter image description here