2014-01-27 1 views
0

나는 확장중인 클래스를 만들고있다. LinearLayout. 그게 내가 프로그래밍 방식으로 레이아웃을 만들려고 노력 중이 야. 여기에 지금까지 무엇을했는지 있습니다 :화면의 중심에 프로그래밍 방식으로 ProgressBar 넣기

RelativeLayout.LayoutParams parentParam = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.MATCH_PARENT); 

    this.setLayoutParams(parentParam); 
    this.setOrientation(LinearLayout.VERTICAL); 

    WebView webView = new WebView(context); 
    LinearLayout.LayoutParams webViewParam = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.MATCH_PARENT); 

    webView.setLayoutParams(webViewParam); 
    this.addView(webView); 

    pb = new ProgressBar(context); 
    LinearLayout.LayoutParams pbParam = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT); 
    pbParam.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL; 
    pb.setLayoutParams(pbParam); 
    webView.addView(pb); 

내 모든 것이 WebViewProgressBar을 볼 수 있습니다, 잘 작동하고 거기에 각각의 작업을하고,하지만 난 화면의 CENTERProgressBar을 넣어 시도하고있다.

여기에 무엇이 누락 되었습니까? 모든 종류의 의견을 주시면 감사하겠습니다.

편집 :이 출력은 지금과 같다 :

여기

enter image description here

+0

출력 결과는 여기에 게시하십시오. –

+0

왜 webview에 pb를 추가합니까? 당신은 this.addView에 pb를 추가해야합니다. – Blackbelt

+0

@PratikButani 추가 된 이미지 – Anupam

답변

1

내가 중심에 ProgressBar을 가지고 한 것입니다. 제 목적으로 ScrollView을 사용했습니다. 여기에 내가 사용한 코드가 있습니다 :

RelativeLayout.LayoutParams parentParam = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.MATCH_PARENT); 

    this.setLayoutParams(parentParam); 
    this.setOrientation(LinearLayout.VERTICAL); 

    scrollView = new ScrollView(context); 
    scrollView.setLayoutParams(new FrameLayout.LayoutParams(
      FrameLayout.LayoutParams.MATCH_PARENT, 
      FrameLayout.LayoutParams.MATCH_PARENT, 
      Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL)); 
    scrollView.setFillViewport(true); 

    scrollView.setBackgroundColor(Color.TRANSPARENT); 

    pb = new ProgressBar(context); 
    LinearLayout.LayoutParams pbParam = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT); 
    pb.setLayoutParams(pbParam); 

    RelativeLayout rel = new RelativeLayout(context); 
    RelativeLayout.LayoutParams relParam = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.WRAP_CONTENT, 
      RelativeLayout.LayoutParams.WRAP_CONTENT); 
    relParam.addRule(RelativeLayout.CENTER_IN_PARENT); 
    rel.addView(pb, relParam); 

    scrollView.addView(rel); 

    webView = new WebView(context); 
    LinearLayout.LayoutParams webViewParam = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.MATCH_PARENT); 
    webViewParam.gravity = Gravity.CENTER_HORIZONTAL 
      | Gravity.CENTER_VERTICAL; 
    webView.setLayoutParams(webViewParam); 

    this.addView(scrollView); 

    this.addView(webView); 

희망, 이것은 다른 사람, 똑같은 것을 시도하는 데 도움이됩니다.

1
// try this way 
1. Custom Linear Layout 
public class MyCustomLinearLayout extends LinearLayout { 
    private FrameLayout frameLayout; 
    private ProgressBar pb; 
    private WebView webView; 
    public MyCustomLinearLayout(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(context); 
    } 

    public MyCustomLinearLayout(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(context); 
    } 

    public MyCustomLinearLayout(Context context) { 
     super(context); 
     init(context); 
    } 

    private void init(Context mContext) { 
     frameLayout = new FrameLayout(mContext); 
     frameLayout.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); 
     webView = new WebView(mContext); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setPluginState(WebSettings.PluginState.ON); 
     webView.getSettings().setSupportZoom(true); 
     webView.getSettings().setBuiltInZoomControls(true); 
     webView.setWebChromeClient(new WebChromeClient() { 
      @Override 
      public void onProgressChanged(WebView view, int newProgress) { 
       super.onProgressChanged(view, newProgress); 
       if (newProgress >= 1) { 
        pb.setVisibility(View.VISIBLE); 
       } 
       if (newProgress == 100) { 
        pb.setVisibility(View.GONE); 
       } 
      } 
     }); 
     webView.setWebViewClient(new WebViewClient()); 
     webView.loadUrl("http://www.google.com"); 
     frameLayout.addView(webView); 
     pb = new ProgressBar(mContext); 
     FrameLayout.LayoutParams parms = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); 
     parms.gravity = Gravity.CENTER; 
     frameLayout.addView(pb,parms); 
     addView(frameLayout); 
    } 


} 
0
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(150, 150); 
    lp.weight = 1.0f; 
    lp.gravity = Gravity.CENTER; 

    ProgressBar pDialog = new ProgressBar(currentActivity); 
    pDialog.setIndeterminateDrawable(currentActivity.getResources().getDrawable(R.drawable.progressload)); 

    LinearLayout ll = new LinearLayout(currentActivity); 
    ll.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
    ll.setOrientation(LinearLayout.VERTICAL); 
    ll.addView(pDialog, lp); 
관련 문제