2014-07-25 8 views
1

부모 스크롤 뷰와 가로 스크롤 뷰 내부에 테이블 레이아웃의 tablerow를 동적으로 생성했습니다.버튼 테이블 레이아웃을 확대하십시오.

이 테이블 레이아웃에서 단추 또는 핀치 확대/축소를 구현하고 싶습니다. 그것을하는 방법? 구현하기 쉬운 두 가지 중 하나가 가능합니다.

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:padding="10dp" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

     <ScrollView android:layout_below="@+id/tableHeader" 
      android:layout_width="match_parent" android:layout_height="match_parent" 
      android:id="@+id/scrollZoomView"> 

      <TableLayout android:stretchColumns="0,1" android:id="@+id/main_table" 
       android:layout_height="wrap_content" android:layout_width="match_parent" /> 

     </ScrollView> 

</HorizontalScrollView> 

편집

는 자바 코드를 추가합니다 : 내가 무엇입니까

zoomIn.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View arg0) { 
      zoom(2.0f, 2.0f, 0.0f, 0.0f); 
     } 
    }); 

    zoomOut.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View arg0) { 
      zoom(1.0f, 1.0f, 0.0f, 0.0f); 
     } 
    }); 

public void zoom(float scalex, float scaley, float pivotx, float pivoty){ 
    sv.setScaleX(scalex); 
    sv.setScaleY(scaley); 
    sv.setPivotX(pivotx); 
    sv.setPivotY(pivoty); 
    sv.requestLayout(); 
} 

문제가 스크롤 폭과 높이가 확대 된 데이터에 맞게 자체를 업데이트하지 않는 것입니다. 예를 들어 테이블에 100 개의 행이 있습니다. 확대 한 후 80 번째 줄까지 스크롤 할 수 있습니다. 축소하면 BAM! 나는 정상적인 크기로 100 번째 행을 본다.

나는

sv.requestLayout(); 

도 아무 일하지

invalidate(); 

을 시도 추가했습니다.

무엇이 문제입니까? 그것을 해결하는 방법?

답변

1

LayoutParams의 값을 변경해 보셨습니까?

TableLayout mainTableLayout = (TableLayout) findViewById(R.id.main_table); 

zoomView(view, 1.5); // Zoom in to 150% 
zoomView(view, 0.5); // Zoom out to 50% 


function zoomView(View view, int zoomX){ 
    ViewGroup.LayoutParams viewParams = view.getLayoutParams(); 
    viewParams.width *= zoomX; 
    viewParams.height *= zoomX; 
    view.setLayoutParams(viewParams); 
} 

참고 :이 단지 확장 할 것이다 당신의 TableLayout하지만 그들이 부모 레이아웃에 따라 조정할 수 있도록 아이 View의 유체를해야 할 것이다.

+0

이것이 작동하지 않는 것 같습니다. Java 코드에 대한 업데이트 된 질문을 확인하십시오. 내가 지쳐서. –