2012-06-27 21 views
3

мне нужен следующий XML, чтобы быть в коде:Webview в программно создан RelativeLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" android:gravity="right" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00000000" 
      > 
      <android.webkit.WebView android:layout_width="fill_parent" 
      android:id="@+id/adview" 
      android:scrollbars="none" 
      android:layout_height="50dp" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentBottom="true" 
      ></android.webkit.WebView> 
      <Button android:layout_width="wrap_content" android:text="x" android:textColor="#000000" 
      android:layout_height="wrap_content" android:id="@+id/hide_popup_button" android:background="#00000000" 
      android:layout_alignTop="@+id/adview" android:layout_alignParentRight="true"></Button> 

     </RelativeLayout> 

Я использую ниже код, но я получаю Force close:

RelativeLayout popwindow=new RelativeLayout(this); 

     RelativeLayout.LayoutParams rl= new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 50); 
     popwindow.setLayoutParams(rl); 
     WebView w= new WebView(this); 
     w.setId(0X100); 
     w.setScrollContainer(false); 
     android.widget.RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)w.getLayoutParams(); 
     params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
     Button b=new Button(this); 
     b.setId(0X101); 
     b.setText("X"); 
     b.setBackgroundColor(Color.TRANSPARENT); 
     b.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     android.widget.RelativeLayout.LayoutParams paramsbut = (RelativeLayout.LayoutParams)b.getLayoutParams(); 
     paramsbut.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
     paramsbut.addRule(RelativeLayout.ALIGN_TOP,w.getId()); 
     popwindow.addView(w,params); 
     popwindow.addView(b,paramsbut); 
     setContentView(popwindow); 

мне нужно предложения о том, как сделайте этот xml-макет через java-код.

+0

попробовать LayoutParams пары = новые LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); w.setLayoutParams (пары); вместо android.widget.RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) w.getLayoutParams(); –

+1

«получает силу близко» сообщение log cat также .. –

+1

null указатель исключение – Shalini

ответ

3

Вы должны написать любое исключение, которое вы получите в своем вопросе. Смотрите, если это помогает:

RelativeLayout popwindow=new RelativeLayout(this); 
    FrameLayout.LayoutParams rl= new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, 50); 
    popwindow.setLayoutParams(rl); 
    WebView w= new WebView(this); 
    w.setId(0X100); 
    w.setScrollContainer(false); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 50); 
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    w.setLayoutParams(params); 
    Button b=new Button(this); 
    b.setId(0X101); 
    b.setText("X"); 
    b.setBackgroundColor(Color.TRANSPARENT); 
    RelativeLayout.LayoutParams bparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, ReloativeLayout.LayoutParams.WRAP_CONTENT); 
    bparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
    bparams.addRule(RelativeLayout.ALIGN_TOP, w.getId()); 
    b.setLayoutParams(bparams);   
    popwindow.addView(w); 
    popwindow.addView(b); 
    setContentView(popwindow); 

Пользовательского компонента проведение WebView и Button:

public class CustomRelativeLayout extends RelativeLayout { 

     private WebView mWebView; 
     private Button mButton; 

     public CustomRelativeLayout(Context context) { 
      super(context); 
      mWebView = new WebView(context); 
      mWebView.setId(0X100); 
      mWebView.setScrollContainer(false); 
      RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.FILL_PARENT, 50); 
      params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
      mWebView.setLayoutParams(params); 
      mButton = new Button(context); 
      mButton.setId(0X101); 
      mButton.setText("X"); 
      mButton.setBackgroundColor(Color.TRANSPARENT); 
      RelativeLayout.LayoutParams bparams = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT, 
        RelativeLayout.LayoutParams.WRAP_CONTENT); 
      bparams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
      bparams.addRule(RelativeLayout.ALIGN_TOP, mWebView.getId()); 
      mButton.setLayoutParams(bparams); 
      addView(mWebView); 
      addView(mButton); 
     } 

     public WebView getTheWebView() { 
      return mWebView; 
     } 

     public Button getTheButton() { 
      return mButton; 
     } 

    } 

Чтобы использовать этот компонент:

CustomRelativeLayout popWindow = new CustomRelativeLayout(this); 
    FrameLayout.LayoutParams rl= new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, 50); 
setContentView(popWindow); 
// get a reference to the WebView and the Button 
WebView w = popWindow.getTheWebView(); 
Button b = popWindow.getTheButton(); 
+0

Он работает. Большое спасибо – Shalini

+0

возможно ли создать его в другом классе, расширяет макет и ссылается на него в нашем основном классе. – Shalini

+1

@Shalini. Вы хотите создать настраиваемый компонент, который будет удерживать вашу кнопку WebView +, а затем использовать этот компонент в вашей деятельности? – Luksprog

Смежные вопросы