JavascriptProva

lunedì 25 gennaio 2016

Aggiunta di nuovi layouts creati programmaticamente al layout principale dell'activity.

Bene.
Ho creato dei LinearLayout da inserire nell'activity, ognuno dei quali contiene un'immagine e una casella di testo, il tutto programmaticamente.
In più, ho esteso la classe LinearLayout per aggiungere una proprietà pubblica Tipo che potrà servirmi per decidere il diverso comportamento di ogni layout al click.

Ecco il codice del metodo che crea il layout:
 private void buildLayout(int X, int Y, int width, int height,String StrTesto,String path){
  JacLinearLayout linearLayout=new JacLinearLayout(this);
  linearLayout.Tipo="Folder";
  linearLayout.setBackgroundColor(Color.GREEN);
  linearLayout.setOrientation(LinearLayout.VERTICAL);
  AbsoluteLayout.LayoutParams absParam = new        AbsoluteLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,X,Y);
  linearLayout.setLayoutParams(absParam);
  ImageView immagine = new ImageView(this);
  BitmapFactory.Options opzioni=new BitmapFactory.Options();
  opzioni.inJustDecodeBounds=true;
  BitmapFactory.decodeFile(path,opzioni);
  int fattore=1;
  while(opzioni.outWidth/fattore>width && opzioni.outHeight/fattore>height){
   fattore*=2;
  }
  opzioni.inSampleSize=fattore;
  opzioni.inJustDecodeBounds=false;
  Bitmap bmp=BitmapFactory.decodeFile(path,opzioni);
  immagine.setImageBitmap(bmp);
  
  TextView testo=new TextView(this);
  testo.setText(StrTesto);
  testo.setTextSize(18);
  LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(width,height);
  
  immagine.setLayoutParams(params);
  linearLayout.addView(immagine);
  linearLayout.addView(testo);
  
  
  
  AbsoluteLayout abs=(AbsoluteLayout)findViewById(R.id.lay);
  abs.addView(linearLayout);
 }
Così facendo, posso creare un nuovo layout semplicemente richiamando questo metodo:
  buildLayout(0,0,200,200,"ASARO MUDMAN","storage/sdcard/DCIM/asaromudman.jpg");
  buildLayout(210,0,200,200,"CAFFE'","storage/sdcard/DCIM/cafe.jpg");
  buildLayout(420,0,200,200,"FACCIA DA CULO","storage/sdcard/DCIM/faciadecul.jpg");
con questo risultato:

Nessun commento:

Posta un commento