마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

linearlayout과 addview 이후 사이즈 관련 질문입니다~

0 추천

안녕하세요 안드로이드 개발중인 초보 개발자입니다.

바로 질문 드리겠습니다. 소스에서 linearlayout.addView(webView) 이렇게 하더라도 실제로는 첫번째 페이지만 나오더라구요. 스크롤도 안생기고..

 

제가 궁금한 것은 ScrollView로 Linear를 감싸지 않고 Linear에서 WebView를 addView 했을 때 모든 웹뷰를 보려면 어떻게 해야할까요? (shouldOverriding에서 전부 다 끝난 뒤 linearlayout의 크기를 바꿔줘도 안되더라구요..ㅎ)

소스입니다~ 감사합니다~!

.java

for (int i = 0; i < webviewCount; i++) {
			WebView sWebView = new WebView(this);
			setWebviewInit(sWebView, i); //WebView에 관한 세팅을해줍니다.

			arrWebView.add(sWebView);
			mainLinearLayout.addView(sWebView);
		}


public boolean shouldOverrideUrlLoading(WebView view, String url) {

if(arrWebView.get(arrWebView.size()-1) == view){
// 이 아래 줄은 에러가 나더라구요..
//					mainLinearLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

// 이 아래처럼 해봐도 화면상으로는 한 화면에만 꽉차게 나오더라구요..
					LinearLayout layout = (LinearLayout)findViewById(R.id.mainLinearLayout);
					LayoutParams params = layout.getLayoutParams();
					params.height = 7000;//mainLinearLayout.getHeight()*arrWebView.size();
					params.width =  7000;//mainLinearLayout.getWidth();
					layout.setLayoutParams(params);
				}

}



.layout

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/createConsentnote_root"
    style="@style/rootlinear" >


        <LinearLayout
            android:id="@+id/mainLinearLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:adjustViewBounds="true"
            android:orientation="vertical"
            android:scaleType="fitCenter" >
        </LinearLayout>
</FrameLayout>
private void setWebviewInit(WebView webview, int pageNum) {
		LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(fm.displayWidth,fm.displayHeight);
		param.topMargin = 30;
		param.bottomMargin = 30;
		webview.setLayoutParams(param);

		// 기존 소스 - 삭제하지 말 것

//		webview.setInitialScale(100);
//		webview.getSettings().setLoadWithOverviewMode(true);
//		webview.getSettings().setUseWideViewPort(true);
		webview.setInitialScale(1);
		webview.getSettings().setJavaScriptEnabled(true);
		webview.setFocusable(true);
		webview.setFocusableInTouchMode(true);
		webview.setVerticalScrollBarEnabled(true);
		webview.setHorizontalScrollBarEnabled(false);
		
		webview.getSettings().setSupportZoom(true);
		webview.getSettings().setBuiltInZoomControls(true);
		webview.getSettings().setDisplayZoomControls(false);
		
		/** about Click over 2.3 **/
		webview.setClickable(true);
		webview.setFocusable(true);
		webview.setLongClickable(true);
		webview.setFocusableInTouchMode(true);
		webview.setOnTouchListener(new OnTouchListener() {
			@Override
			public boolean onTouch(View v, MotionEvent event) {
//				if (csScrollViewMain.nMod == 1) {
				if( ((DrawViewHandWriting) arrWebView.get(arrWebView.indexOf(v)).getChildAt(0)).nMod==1 ){
					((DrawViewHandWriting) arrWebView.get(arrWebView.indexOf(v)).getChildAt(0)).x = event.getX();
					((DrawViewHandWriting) arrWebView.get(arrWebView.indexOf(v)).getChildAt(0)).y = event.getY();

					((DrawViewHandWriting) arrWebView.get(arrWebView.indexOf(v)).getChildAt(0)).draw(((DrawViewHandWriting) arrWebView.get(arrWebView.indexOf(v)).getChildAt(0)).mPath, event,0);
				}
				return false;
			}
		});

 

행인28 (480 포인트) 님이 2016년 6월 3일 질문
행인28님이 2016년 6월 3일 수정

1개의 답변

0 추천
WebView의 width (혹은 height)를 0으로 설정하고 layout_weight 값을 항상 같게 설정합니다.

이렇게하면 추가된 모든 WebView가 화면에 표시됩니다.

다만 WebView 크기가 줄어들어 표시되므로 내용물이 잘려서 표시될 겁니다.
익명사용자 님이 2016년 6월 3일 답변
"WebView의 width (혹은 height)를 0으로 설정하고 layout_weight 값을 항상 같게 설정합니다."
를 조금만 더 자세히 설명해 주실 수 있나요ㅠ..? webview setting할때 LayoutParams을 이용해서 width 혹은 height를 0으로 주라는 말씀인가요??

또한, WebView의 크기가 줄어들고 잘려서 표시되면..음..이건 그 후에 제가 좀 더 알아보겠습니다!!ㅎ
...