2013-05-02 65 views
0

我目前在android中有一个表格布局。将其作为一个时间表,看起来像下面这样:在TableLayout中获取TextView的位置Android

<?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> 

当用户点击在App我希望能够得到他们所点击的确切小区的位置的细胞。我得到的列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

吐司消息是表示?你需要设置'tv.setClickable(true);'。 – 2013-05-02 12:06:06

+0

你可以选择gridview而不是表格布局。 – 2013-05-02 12:09:51

+0

嗨,对不起,迟到的回复,但是吐司消息出现。它显示列的位置,但我想获得行和列的位置。 – 2013-05-03 11:40:04

回答

0

尝试添加一个不同的标记到您的每个textview,以便您可以最近引用它。

也补充一点:

android:descendantFocusability="blocksDescendants" 

在XML文件中为您tablelayout,这会给你的TextView的正确位置。

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

尝试列表视图,而不是表格布局。它有一种滚动到相应位置的方法。上的TextView点击与否时

listview.smoothScrollToPosition(position);