2013-05-02 6 views
0

현재 안드로이드에 테이블 레이아웃이 있습니다. 이것은 시간 테이블로 설정하고 다음과 같이 표시됩니다 : TableLayout 안드로이드에서 TextView의 위치 얻기

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fadeScrollbars="false" > 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/table" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:stretchColumns="*" > 

<TableRow 
    android:id="@+id/tableRow1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/blank" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/mon" 
     android:background="@drawable/border" 
     android:text="@string/monday" /> 

    <TextView 
     android:id="@+id/tues" 
     android:background="@drawable/border" 
     android:text="@string/tuesday" /> 

    <TextView 
     android:id="@+id/wed" 
     android:background="@drawable/border" 
     android:text="@string/wednesday" /> 

    <TextView 
     android:id="@+id/thurs" 
     android:background="@drawable/border" 
     android:text="@string/thursday" /> 

    <TextView 
     android:id="@+id/fri" 
     android:background="@drawable/border" 
     android:text="@string/friday" /> 

    <TextView 
     android:id="@+id/sat" 
     android:background="@drawable/border" 
     android:text="@string/Saturday" /> 

    <TextView## Heading ## 
     android:id="@+id/sun" 
     android:background="@drawable/border" 
     android:text="@string/Sunday" /> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/nine" 
     android:background="@drawable/border" 
     android:text="@string/nine" /> 

    <TextView 
     android:id="@+id/nineone" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/ninetwo" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/ninethree" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/ninefour" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/ninefive" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/ninesix" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/nineseven" 
     android:background="@drawable/border" /> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/ten" 
     android:background="@drawable/border" 
     android:text="@string/ten" /> 

    <TextView 
     android:id="@+id/tenone" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/tentwo" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/tenthree" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/tenfour" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/tenfive" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/tensix" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/tenseven" 
     android:background="@drawable/border" /> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/eleven" 
     android:background="@drawable/border" 
     android:text="@string/eleven" /> 

    <TextView 
     android:id="@+id/elevenone" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/eleventwo" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/eleventhree" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/elevenfour" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/elevenfive" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/elevensix" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/elevenseven" 
     android:background="@drawable/border" /> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow5" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/twelve" 
     android:background="@drawable/border" 
     android:text="@string/twelve" /> 

    <TextView 
     android:id="@+id/twelveone" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twelvetwo" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twelvethree" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twelvefour" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twelvefive" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twelvesix" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twelveseven" 
     android:background="@drawable/border" /> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow6" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/one" 
     android:background="@drawable/border" 
     android:text="@string/one" /> 

    <TextView 
     android:id="@+id/oneone" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/onetwo" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/onethree" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/onefour" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/onefive" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/onesix" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/oneseven" 
     android:background="@drawable/border" /> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow7" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/two" 
     android:background="@drawable/border" 
     android:text="@string/two" /> 

    <TextView 
     android:id="@+id/twoone" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twotwo" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twothree" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twofour" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twofive" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twosix" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/twoseven" 
     android:background="@drawable/border" /> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow8" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/three" 
     android:background="@drawable/border" 
     android:text="@string/three" /> 

    <TextView 
     android:id="@+id/threeone" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/threetwo" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/threethree" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/threefour" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/threefive" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/threesix" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/threeseven" 
     android:background="@drawable/border" /> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow9" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/four" 
     android:background="@drawable/border" 
     android:text="@string/four" /> 

    <TextView 
     android:id="@+id/fourone" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fourtwo" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fourthree" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fourfour" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fourfive" 
     android:background="@drawable/border" /> 
    <TextView 
     android:id="@+id/foursix" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fourseven" 
     android:background="@drawable/border" /> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow10" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/five" 
     android:background="@drawable/border" 
     android:text="@string/five" /> 

    <TextView 
     android:id="@+id/fiveone" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fivetwo" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fivethree" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fivefour" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fivefive" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fivesix" 
     android:background="@drawable/border" /> 

    <TextView 
     android:id="@+id/fiveseven" 
     android:background="@drawable/border" /> 
</TableRow> 

</TableLayout> 

</ScrollView> 

사용자가 나는 그들이 클릭 한 정확한 셀의 위치를 ​​얻을 수있을 걸려 라 앱에서 셀을 클릭

. 나는 열 ID를 얻으려고 노력하지만 완전한 지위를 얻을 수는 없습니다. 내 코드는 다음과 같습니다

public class TimeTable extends Activity { 
    TextView tv; 
    TableRow row; 
    String dayName; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_time_table); 
    TableLayout group = (TableLayout) findViewById(R.id.table); 
    row = (TableRow) group.getChildAt(0); 
    for (int i = 0; i < group.getChildCount(); i++) { 
     row = (TableRow) group.getChildAt(i); 
     for (int j = 0; j < row.getChildCount(); j++) { 
     tv = (TextView) row.getChildAt(j); 
     registerForContextMenu(tv); 
     tv.setId(j); 
     tv.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Toast toast = Toast.makeText(getApplicationContext(), Integer.toString(v.getId()), Toast.LENGTH_LONG); 
      toast.show(); 
      } 
     }); 
     } 
    } 
    } 

누구나 내가 전체 포지션을 얻을 수 있는지 알고 있습니까? 감사합니다

+0

토스트 메시지가 TextView를 클릭 할 때 표시되는지 여부. 'tv.setClickable (true);'를 설정해야합니다. –

+0

u는 테이블 레이아웃 대신 gridview를 선호 할 수 있습니다. –

+0

안녕하십니까, 늦어서 반갑습니다. 예, 토스트 메시지가 나타납니다. 그것은 열의 위치를 ​​표시하지만 행과 열 위치를 가져 오려고합니다. –

답변

0

각 텍스트 뷰에 별개의 태그를 추가하여 최근에 참조 할 수있게하십시오.

또한이 추가 : XML 파일에 TableLayout을에서

android:descendantFocusability="blocksDescendants" 

이 당신에게 텍스트 뷰의 정확한 위치를 제공 할 것입니다.

1

제안 : 반복되는 루프를 사용하여 셀의 위치를 ​​가져올 수 있습니다. 반복 할 때 특정 열과 행이있는 모든 새 셀에 도달합니다. 이것이 도움이 될 것입니다.

   TableLayout group = (TableLayout) findViewById(R.id.table); 
       row = (TableRow) group.getChildAt(0); 
       for (int i = 0; i < group.getChildCount(); i++) 
       { 
         row = (TableRow) group.getChildAt(i); 
         for (int j = 0; j < row.getChildCount(); j++) 
         { 
            tv = (TextView) row.getChildAt(j); 
            registerForContextMenu(tv); 
            tv.setId(j); 
            tv.setOnClickListener(onClick(tv,i,j)); 
         } 
       } 

       View.OnClickListener onClick(final TextView tc,final int row,final int col) { 
         return new View.OnClickListener() { 
             public void onClick(View v) { 

            @Override 
            public void onClick(View v) { 
             // TODO Auto-generated method stub 

            //use col and row as position of the cell together. 
           Toast toast = Toast.makeText(getApplicationContext(),      Integer.toString(v.getId()), Toast.LENGTH_LONG); 
           toast.show(); 
     } 
    }); 
0

테이블 레이아웃 대신 목록보기를 사용해보십시오. 각각의 위치로 스크롤하는 메소드가 있습니다.

listview.smoothScrollToPosition(position); 
관련 문제