如何以编程方式生成水平滚动LinearLayout与Imageview和textview在中心底部

时间:2017-03-23 04:27:02

标签: android xml

我想以编程方式生成水平滚动LinearLayout,其中Imageview和textview位于中心底部。

这是我的Java代码。:

      LinearLayout rec=(LinearLayout)findViewById(R.id.hori_recom);

     //ViewGroup.LayoutParams params=new   ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
       ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(450,450);
      ViewGroup.LayoutParams params1=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
      // for(int g=0;g<5;g++)
      for(int g=0;g<imgpath_orignal.size();g++)
      {

        ImageView recimg=new ImageView(Details.this);
        recimg.setId(g+1);
        recimg.setPadding(25,0,0,0);
        Picasso.with(Details.this).load(al_gallary_img.get(g)).placeholder(R.drawable.logo)
                .error(R.drawable.logo).into(recimg);
        recimg.setLayoutParams(params);
        TextView txtlabel=new TextView(Details.this);
        txtlabel.setId(g+1);
        txtlabel.setGravity(Gravity.CENTER|Gravity.BOTTOM);
        txtlabel.setPadding(15,15,15,15);
        txtlabel.setText(""+al_img_caption.get(g));
        txtlabel.setLayoutParams(params1);
        rec.addView(txtlabel);
        rec.addView(recimg);

这是我的Xml:

           <HorizontalScrollView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scrollbars="none">


                 <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:id="@+id/hori_recom"
                    android:layout_marginTop="10dp"/>

         </HorizontalScrollView>

问题是我没有将我的textview放在我的Imageview的底部中心。

2 个答案:

答案 0 :(得分:0)

这是因为您已将TextView的重力设置为center_bottom而不是layout_gravity。

只需删除

txtlabel.setGravity(Gravity.CENTER|Gravity.BOTTOM);

而不是

ViewGroup.LayoutParams params1 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);`

这样做

LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); params1.gravity = Gravity.CENTER|Gravity.BOTTOM;

这是以编程方式设置layout_gravity的方法。

答案 1 :(得分:0)

做一件事 - 将您的ImageViewTextView合并为一个版面
将此布局称为row_layout

<LinearLayout
    ....
    ....

    <ImageView
        ...
        ... />
    <TextView
        ...
        ... />
</LinearLayout>

现在将布局添加到位于LinearLayout -

HorizontalScrollView
for(int g=0; g<imgpath_orignal.size(); g++) {
    View v = LayoutInflater.from(context).inflate(R.layout.row_layout, parent, false);
    // Do your layout binding stuff over here..
    ImageView ivPhoto = (ImageView) v.findViewById(R.id.imageview_id); // Give reference
    Picasso.with(context).load(url).into(ivPhoto); // Loading image using Picasso
    rec.addView(v);
}