2012-12-11 2 views
0

J'ai une surfaceview avec un écouteur de clic attaché à lui.Im essayant d'insérer par programme un WebView dans mon code

Quand je clique dessus, il se rétrécit à la moitié de la largeur et de la hauteur ... et la place dans le coin inférieur droit d'angle via:

RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams( 
    getWindowManager().getDefaultDisplay().getWidth()/2, 
    getWindowManager().getDefaultDisplay().getHeight()/2  
); 
rlp.setMargins(
    getWindowManager().getDefaultDisplay().getWidth()/2,  
    getWindowManager().getDefaultDisplay().getHeight()/2, 
    0, 
    0); 

Il fonctionne comme prévu, mais je veux placer derrière lui dynamiquement un webView.

J'ai essayé:

WebView wv = makeWebView(); 
//makeWebView(); is a method of my mainActivity, which simple does. 
private Webview makeWebView(){ return new WebView(this); } 

Je ne peux pas l'air de le faire pour être derrière tout le reste bien. Est-ce que je fais quelque chose de mal?

mon XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/RR1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

<LinearLayout 
    android:id="@+id/LL1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <SurfaceView 
     android:id="@+id/surfaceView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

</RelativeLayout> 

mon MainActivity:

package com.example.testfortim; 

import android.os.Bundle; 
import android.app.Activity; 
import android.graphics.Color; 
import android.view.Gravity; 
import android.view.Menu; 
import android.view.SurfaceView; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.webkit.WebView; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //SurfaceView sv = new SurfaceView(); 
    SurfaceView sv = (SurfaceView)findViewById(R.id.surfaceView1); 
    sv.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      LinearLayout ll = (LinearLayout)findViewById(R.id.LL1); 
      //LinearLayout.LayoutParams llp = (LinearLayout.LayoutParams)ll.getLayoutParams(); 
      //RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(ll.getLayoutParams().width/2,ll.getLayoutParams().height/2);//(RelativeLayout.LayoutParams)ll.getLayoutParams(); 
      RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
        getWindowManager().getDefaultDisplay().getWidth()/2, 
        getWindowManager().getDefaultDisplay().getHeight()/2 
        ); 
      rlp.setMargins(getWindowManager().getDefaultDisplay().getWidth()/2, getWindowManager().getDefaultDisplay().getHeight()/2, 0, 0); 
      ll.setLayoutParams(rlp); 

      WebView wv = makeWebView(); 
      //wv.setBackgroundColor(0); 
      //wv.setBackgroundResource(R.color.Blue); 
      //wv.setBackgroundResource(Color.BLUE); 
      wv.loadData("<html><body>TEST</body></html>", "text/html", "utf-8"); 
      RelativeLayout rl = (RelativeLayout)findViewById(R.id.RR1); 
      //rl.addView(wv); 

      //ll.addView(wv); 


     } 

    }); 

} 

protected WebView makeWebView() { 
    return new WebView(this); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

} 

Je redimensionné la disposition linéaire et propose que, de sorte que le Webview devrait être placé quelque part dans RR1, de ce que je crois. Je regardais divers documents, et ce n'était pas tout à fait ce que je cherchais ou peut-être par hasard, je ne l'ai pas compris.

Avez-vous des idées sur la façon dont cela est accompli?

En guise de note: Je ne sais pas pourquoi la méthode onCreateOptionMenu est là. Je ne prévois pas de l'utiliser, et je finirai par l'enlever.

+0

pourquoi ne pas vous essayez d'ajouter WebView dans le fichier XML au lieu de SurfaceView. Il doit y avoir un identifiant qui lie votre fichier XML avec le code Java. http://developer.android.com/guide/webapps/webview.html passez par ce –

+0

vous pouvez faire tout dans Android par programme si vous le souhaitez. Je devrais pouvoir ajouter un childNode au ParentNode aucun problème. Ai-je raison – Fallenreaper

+0

oui mais c'est une mauvaise approche. Si vous faites tout par programmation, alors vous ne serez pas en mesure de supporter tous les écrans. Par conséquent, divisez tous les éléments liés à l'interface utilisateur en code XML et Java dans votre espace de travail. –

Répondre

4

Essayez rl.addView(wv, 0); fera l'affaire :)

Questions connexes