1

私は現在、アンドロイドでテーブルレイアウトを持っています。これはタイム テーブルとして設定され、次のようになります。

<?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();
          }
        });
      }
    }
  }

フルポジションを取得する方法を知っている人はいますか?ありがとう

4

3 に答える 3

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();
      }
    });
于 2013-05-02T12:11:20.307 に答える
0

最近参照できるように、各テキストビューに個別のタグを追加してみてください。

これも追加します:

android:descendantFocusability="blocksDescendants" 

xmlファイルのテーブルレイアウトで、これによりテキストビューの正しい位置が得られます。

于 2013-05-02T12:11:00.213 に答える
-1

テーブル レイアウトの代わりにリスト ビューを試してください。それぞれの位置にスクロールするメソッドがあります。

    listview.smoothScrollToPosition(position);
于 2013-05-02T12:15:52.653 に答える