1

初投稿 お手柔らかに…

このコードは、textviews simples にハイフンでいっぱいの 10 x 10 のテーブルを作成します...

onClickListner を使用すると、テキストがクリックされた場合に色を変更する必要があります。

失敗するtv.setTextColor(Color.RED);

ソートできますか、それとももっと良い方法がありますか??

ありがとう。

_一時クラス:

public class _Temp extends Activity implements OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.a_temp);


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

    // Add 10 Rows / 10 Cols ~~~~~~~~~~~~~~~~~~~~~~~~~~
    int idxCount = 0;

    for (int tree = 1; tree <= 10; tree++) {
        idxCount = 0;

        TableRow TableRows = new TableRow(this);
        TableRows.setId(tree * 100 + idxCount);
        TableRows.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        TableRows.setBackgroundColor(Color.LTGRAY);
        idxCount++;

        for (int bird = 1; bird <= 10; bird++) {
            TextView label_TableCols2 = new TextView(this);
            label_TableCols2.setId(tree * 100 + idxCount);
            label_TableCols2.setBackgroundColor(Color.DKGRAY);
            label_TableCols2.setClickable(true);
            label_TableCols2.setOnClickListener(this);

            label_TableCols2.setText("-");

            TableRows.addView(label_TableCols2); // add the column to the table row
            idxCount++;
        }
        treeTable.addView(TableRows, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    }
}

public void onClick(View v) {
    Log.i("scoreTable", "Something Clicked - ID = " + Integer.toString(v.getId()));

    int resId = getResources().getIdentifier(Integer.toString(v.getId()), "id", getPackageName());

    Log.i("scoreTable", "Colour Update 1 - resId = " + Integer.toString(resId));

    TextView tv = (TextView) findViewById(resId);

    Log.i("scoreTable", "Colour Update 2 - Just to see if it gets this far");

    tv.setTextColor(Color.RED);

    Log.i("scoreTable", "Colour Update 3 - Just to see if it gets this far");
}
}

および a_temp.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <HorizontalScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

                <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <TableLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/main_table"
                android:layout_width="match_parent"
                android:layout_height="fill_parent" >

            </TableLayout>

        </LinearLayout>

    </HorizontalScrollView>

</ScrollView>

追記: 簡単すぎました… 空気入れからいかがでしょうか!!

そのため、テーブル インフレータ ポップアップのアイテムをクリックし、色を選択して [Choose Colour] ボタンをクリックし、クリックしたハイフンの色を更新します。

public void onClick(View v) {
    ((TextView) v).setTextColor(Color.RED); // <--- SWEET, WORKING

    AlertDialog.Builder PopUpBuilder = new AlertDialog.Builder(this);

    //...

    PopUpBuilder.setPositiveButton("Choose Colour", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

            // Do stuff and store global variables

            updateTable();
        }
    });
    AlertDialog PopupDialog = PopUpBuilder.create();
    PopupDialog.show();
} 

public void updateTable() {

    TextView scoreTableTitle = (TextView) findViewById(R.id.textTitle1);
    scoreTableTitle.setText("woo woo"); // <--- WORKING

    ((TextView) v).setTextColor(Color.BLUE); // <--- ????           
}
4

1 に答える 1

3

クリックされたビューは TextView なので、リスナーに彼の色を設定するだけです:

public void onClick(View v) {
    ((TextView) v).setTextColor(Color.RED);
}
于 2012-06-08T14:00:22.477 に答える