2014-02-25 23 views
0

实际上,主布局是一个相对布局,其中实习生包含一个相对布局。主要目标是将图像添加到内部相对布局。在android中通过JAVA向布局添加组件

我试过这个,但没有成功。这是我的代码:

import android.os.Bundle; 
import android.view.Display; 
import android.view.Gravity; 
import android.view.animation.Animation; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 
import android.app.Activity; 
import android.graphics.Point; 

public class MainActivity extends Activity { 

    Display display; 
    Point point; 
    int width; 
    int height; 
    Animation up, down, right, left; 
    RelativeLayout rl, rl2; 


    Integer[] pics = { R.drawable.img1, R.drawable.img2,R.drawable.img3, R.drawable.img4, 
      R.drawable.img5, R.drawable.img6,R.drawable.img7, R.drawable.img8, 
      R.drawable.img9, R.drawable.img10,R.drawable.img11, R.drawable.img12, 
      R.drawable.img13, R.drawable.img14,R.drawable.img15}; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Init(); 

    } 

    private void Init() { 
     // TODO Auto-generated method stub 


     rl = (RelativeLayout) findViewById(R.id.Rlayout); 
     rl.setGravity(Gravity.CENTER); 
     int x = 0; 
     int y = 0; 

     for(int i = 1 ; i<16 ; i++){ 
      ImageView img = new ImageView(this); 
      img.setImageResource(pics[i-1]); 
      int tempx = img.getWidth(); 
      int tempy = img.getHeight(); 
      rl.addView(img, x, y); 
      x += tempx; 
      if(i%4 == 0){ 
       x = 0; 
       y += tempy; 
      } 

     } 
     rl.bringToFront(); 

     } 
} 

为正在使用的布局XML代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/R1Layout"> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:gravity="center" 
     android:id="@+id/Rlayout" > 
    </RelativeLayout> 

</RelativeLayout> 

,我得到的是一个空白的屏幕输出。

帮我出一个解决方案如何提前内相对布局内显示图像

感谢,

+1

使用网格视图,而不是RelativeLayout的 – Triode

回答

0

我想你是误会,X和Y都不坐标,是宽度和高度分别

rl.addView(img, x, y); 

,你不容获得imageviews与大小:

int tempx = img.getWidth(); 
int tempy = img.getHeight(); 

必须使用容器把尺寸和坐标您imageview's:

RelativeLayout.LayoutParams params; 
       params = new RelativeLayout.LayoutParams(100, 100);    
       params.leftMargin = x; 
       params.topMargin = y; 
       rl.addView(img,params); 

这是如何做到这一点的例子:

private void Init() { 
    // TODO Auto-generated method stub 

    int x = 0; 
    int y = 0; 
    rl = (RelativeLayout) findViewById(R.id.Rlayout); 
    rl.setGravity(Gravity.CENTER); 
     for(int i = 0 ; i<14 ; i++){ 
      ImageView img = new ImageView(this); 
      img.setImageResource(pics[i]); 
       //int tempx = img.getWidth(); 
      //int tempy = img.getHeight();   
      int tempx = 100;     
      int tempy = 100; 
      //rl.addView(img, x, y); 

      x += tempx; 
      if(i%4 == 0){ 
       x = 0; 
       y += tempy; 
      } 

      RelativeLayout.LayoutParams params; 
      params = new RelativeLayout.LayoutParams(100, 100);    
      params.leftMargin = x; 
      params.topMargin = y; 
      rl.addView(img,params); 



     }      
    rl.bringToFront(); 

} 

拉杰什一样,我也推荐使用Gridview代替RelativeLayout的。

见这个例子:

GridView and excess space padding

+1

谢谢。但我为相对布局去的唯一原因是api版本。因为网格布局是从api level 14或以上版本支持的。但我希望我的应用程序能够在api level 11以上的手机上运行。请详细说明如何使用ImageView。我在上面实现使用图像视图。你能否从我上面的代码中区分出来。 – c0deBeastx

1

要将图像插入内RelativeLayout的,你需要使用的ImageView对象。您可以使用可用于RelativeLayout的addView()方法(通过从ViewGroup类继承)执行此操作。您可以在活动中如下这样做(你必须决定要将此):

RelativeLayout rl = (RelativeLayout) findViewById(R.id.Rlayout); // find inner layout 
ImageView iview = new Image(this); 
// Set image view parameters - refer to Android documentation for this 
rl.addView(iview); // and so on. 
// You can add as many items as you want to any layout you want in this manner 
相关问题