2014-09-29 67 views
1

我想在我的Android應用的社交Feed列表視圖中顯示多個圖片,類似於Facebook Android應用的功能。 參見下面圖像:在網格樣式的社交Feed上顯示多個圖片

enter image description here

的圖像的最大數是在後顯示爲3 對於多個圖像,我想要的圖像被動態配置/在網格調整大小按它們的大小鍵入格式如圖所示。

我試過在LinearLayout裏面調整3個ImageViews,通過指定layout_weight但不起作用。 任何形式的幫助/建議或示例代碼真的很感謝! ORZ

+1

嘿嘿的設置@ Vishy如果你有任何解決方案可以讓我如何做到這一點。 – 2015-01-19 06:03:29

+0

嗯,我終於實現了這個使用GridView,使用自定義ImageViews。我通過創建一個Custom ImageView類並設置java的高度和寬度比例來動態調整圖像的高度和寬度。我隨時設置了在Feed中顯示的最多3個圖像的限制。對於超過3張圖片,我在圖片下方放置了一個按鈕,讓用戶看到不同的活動,顯示所有圖片。對於少於3張圖片,我使ImageViews可見/不可見並相應調整 – Vishy 2015-02-05 06:36:37

+0

如何分析Facebook供稿的任何代碼。 – 2015-02-05 06:40:52

回答

3

我已經這樣做了,請檢查可能是你得到你的答案 這是XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="400dp" 
    > 
    <FrameLayout 
     android:id="@+id/imgframe" 
     android:layout_width="match_parent" 
     android:layout_centerHorizontal="true" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_height="match_parent"> 
    </FrameLayout> 
    </RelativeLayout> 

現在,我已經做了親語法圖像 這是

public class ImageShow extends Activity { 
      ImageView img1,img2,img3,img4; 
      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.image_dsgn); 
       Display display = getWindowManager().getDefaultDisplay(); 
       Point size = new Point(); 
       display.getSize(size); 
       int width = size.x; 
       int sst=width-20; 
       Log.d("Width is",String.valueOf(sst)); 
       Log.d("Width is",String.valueOf(width)); 
       int i=3; 
       FrameLayout frameLayout=(FrameLayout)findViewById(R.id.imgframe); 
       if(i==1) 
       { ImageView imageView = new ImageView(this); 
        imageView.setImageResource(R.drawable.img3); 
        imageView.setPadding(0,5,0,0); 
        imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
        imageView.setLayoutParams(new FrameLayout.LayoutParams(width,400)); 
        frameLayout.addView(imageView); 
       } 
       if(i==2) 
       { ImageView imageView = new ImageView(this); 
        imageView.setImageResource(R.drawable.img3); 
        imageView.setPadding(0,5,0,0); 
        imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
        imageView.setLayoutParams(new FrameLayout.LayoutParams(width/2, 
          400)); 
        ImageView imageView1 = new ImageView(this); 
        imageView1.setImageResource(R.drawable.img3); 
        imageView1.setScaleType(ImageView.ScaleType.FIT_XY); 
        imageView1.setLayoutParams(new FrameLayout.LayoutParams(width/2, 
          400)); 
        imageView1.setX(width/2); 
        imageView1.setPadding(5,5,0,0); 
        frameLayout.addView(imageView); 
        frameLayout.addView(imageView1); 
       } 
       if(i==3) 
       { 
        ImageView imageView = new ImageView(this); 
        imageView.setImageResource(R.drawable.img3); 
        imageView.setPadding(0,5,0,0); 
        imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
        imageView.setLayoutParams(new FrameLayout.LayoutParams(width/2, 
          400)); 
        ImageView imageView1 = new ImageView(this); 
        imageView1.setImageResource(R.drawable.img3); 
        imageView1.setX(width/2); 
        imageView1.setPadding(5,5,0,0); 
        imageView1.setScaleType(ImageView.ScaleType.FIT_XY); 
        imageView1.setLayoutParams(new FrameLayout.LayoutParams(width/2, 
          200)); 
        ImageView imageView2 = new ImageView(this); 
        imageView2.setImageResource(R.drawable.img3); 
        imageView2.setX(width/2); 
        imageView2.setY(200); 
        imageView2.setPadding(5,5,0,0); 
        imageView2.setScaleType(ImageView.ScaleType.FIT_XY); 
        imageView2.setLayoutParams(new FrameLayout.LayoutParams(width/2, 
          200)); 
        frameLayout.addView(imageView); 
        frameLayout.addView(imageView1); 
        frameLayout.addView(imageView2); 
       } 
       if(i==4) 
       { 
        //x=0,y=0 
        ImageView imageView = new ImageView(this); 
        imageView.setImageResource(R.drawable.img3); 
        imageView.setPadding(0,5,0,0); 
        imageView.setLayoutParams(new FrameLayout.LayoutParams(sst/2,400)); 
        imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
        //x=200,y==0 
        ImageView imageView1 = new ImageView(this); 
        imageView1.setImageResource(R.drawable.img3); 
        imageView1.setX(sst/2); 
        imageView1.setPadding(2,5,0,0); 
        imageView1.setLayoutParams(new FrameLayout.LayoutParams(sst/2,400/3)); 
        imageView1.setScaleType(ImageView.ScaleType.FIT_XY); 

        ImageView imageView2 = new ImageView(this); 
        imageView2.setImageResource(R.drawable.img3); 
        imageView2.setX(sst/2); 
        imageView2.setY(400/3); 
        imageView2.setPadding(2,5,0,0); 
        imageView2.setLayoutParams(new FrameLayout.LayoutParams(sst/2,400/3)); 
        imageView2.setScaleType(ImageView.ScaleType.FIT_XY); 

        ImageView imageView3= new ImageView(this); 
        imageView3.setImageResource(R.drawable.img3); 
        imageView3.setX(sst/2); 
        imageView3.setY((400/3+400/3)); 
        imageView3.setPadding(2,5,0,0); 
        imageView3.setLayoutParams(new FrameLayout.LayoutParams(sst/2,400/3)); 
        imageView3.setScaleType(ImageView.ScaleType.FIT_XY); 


        TextView textView=new TextView(this); 
        textView.setText("+ 6"); 
        textView.setX(sst/2); 
        textView.setTextColor(Color.parseColor("#ffffff")); 
        textView.setTypeface(null, Typeface.BOLD); 
        textView.setY(400/3+400/3); 
        textView.setGravity(Gravity.CENTER); 
        textView.setTextSize(20); 
        textView.setLayoutParams(new FrameLayout.LayoutParams(sst/2,400/3)); 
        frameLayout.addView(imageView); 
        frameLayout.addView(imageView1); 
        frameLayout.addView(imageView2); 
        frameLayout.addView(imageView3); 
        frameLayout.addView(textView); 
       } 

      } 
     }