2012-01-22 3 views
0

기본적으로 나는 태블릿 용 응용 프로그램을 만들려고합니다. 테이블 레이아웃 내에서 사용자가 추가하고 제거한 위젯이 여러 개있을 것입니다. 위젯이 테이블 레이아웃의 너비와 높이에 따라 다르게 크기가 조정되도록 동적이어야합니다.안드로이드 화면의 치수 얻기

이렇게하려면 테이블 레이아웃에서 3x3 격자를 만들려고합니다. 짐작할 수 있듯이 각 사각형의 너비와 높이는 테이블 레이아웃의 33 %입니다.

이 내가 가진 것입니다 :

DisplayMetrics metrics; 
int totalScreenSizeH; 
int totalScreenSizeW; 

TableLayout contentTable; 
LinearLayout contentLayout; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //Get the UI detail 
    metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    totalScreenSizeH = metrics.heightPixels; 
    totalScreenSizeW = metrics.widthPixels; 



    contentTable=(TableLayout)findViewById(R.id.tableLayout1); 
    contentLayout=(LinearLayout)findViewById(R.id.contentLayout); 

    int tableWidth =contentTable.getWidth(); 
    int tableHeight=contentTable.getHeight(); 

    int layoutWidth=contentLayout.getWidth(); 
    int layoutHeight=contentLayout.getHeight(); 

    Log.v("Table Width",""+tableWidth); 
    Log.v("Table Height",""+tableHeight); 

    Log.v("Layout Width",""+layoutWidth); 
    Log.v("Layout Height",""+layoutHeight); 

그래서 그냥이 조금 더 잘 설명 할 수 있습니다. linearLayout에는 3 개의 테이블 행이있는 tablelayout이 있습니다. 나는 폭과 높이를 얻을 수있을 것이라고 생각했지만 어떤 이유로 두 가지 모두 크기가 0으로 돌아오고 있습니다. 하나는 너비와 높이가 희미하다. Im은 그 변수를 저장하고 그 변수/3을 기반으로 위젯을 만든다.

그래서이 질문 :

1 :이 동적 크기의 위젯을 처리 할 수있는 올바른 방법이다. 아니면 이런 문제를 처리하는 잘못된 방법입니까?

2 : 2-4 변수가 모두 0으로 되돌아가는 이유는 무엇입니까?

+1

정확한 답변을 모르겠지만 테이블과 폰 (다양한 치수)을 지원하고 대시 보드 레이아웃을 지원하는 데 큰 도움이되는 자료를 알려줄 수 있습니다. 귀하의 3x3 그리드와 함께 설명하고 있습니다). Google 2011 IO 애플리케이션에는 이에 대한 몇 가지 훌륭한 가이드 라인이 있으며, 소스를 살펴보고 여기에서 수행 한 내용을 확인하는 것이 좋습니다. http://code.google.com/p/iosched/ – Jack

답변

1

엄청난 양의 해상도와 밀도로 인해 안드로이드에서 완벽한 픽셀 디자인을하는 것을 권장합니다.

제안 사항은 부동 3x3을 만드는 데 도움이되는 android:layout_width/height="wrap_content"android:layout_weight="INTEGER"입니다. GridView

+0

Gridview는 실제로 하려고하는 것. 나는 그것이 4.0에서만 가능하다고 생각했다. 그게 사실 그리드 아웃. 그리드 뷰에는 기본 유형 이외의 것이 포함됩니까? 문자열 대신에 조각이나 다른 레이아웃을 저장할 수 있습니까? – OVERTONE

+1

GridView에 넣는 어댑터를 확장하고 해당 어댑터의 getView를 조작하면 원하는 모든 것을 넣을 수 있습니다. – jlindenbaum

0

OP에 대한 의견으로 소스에 연결되었지만 3x3 Grid의 경우 사용자 지정 DashboardLayout 구현 (Apache License FTW)으로 수행 한 몇 가지 사례를 따릅니다. 다양한 화면 크기에서 가로 및 세로 간격을 수정합니다 : https://gist.github.com/882650.

귀하의 유스 케이스에 맞지 않는 경우, 귀하가 유스 케이스에 맞지 않는 경우, 귀하가 유스 케이스에 맞지 않을 가능성이 높습니다.