2014-01-27 22 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是可见的,这样做有各自的任务,但我试图把ProgressBar在屏幕的CENTER

我在这里错过了什么。任何类型的输入将不胜感激。

编辑: 输出现在看起来是这样的:

enter image description here

+0

你在输出中得到了什么,在这里发表。 –

+0

你为什么要将pb添加到webview?你应该添加pb到this.addView – 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); 
相关问题