0

ここに画像の説明を入力

グリッド内の文字を定義し、選択した文字を強調表示し、有効な単語の場合は強調表示します。文字を定義してグリッド ビューで表示できます。しかし、選択時に図のように単語を強調表示するにはどうすればよいですか?? 私は同様のアプリを開発しています。助けてください。

Androidマーケットの単語検索アプリから画像をコピーしました。

4

1 に答える 1

1
  • r1c1、r1c2 など - Row 1 Col1 、Row 1 Col2 のように、各要素に一意の ID を与えます。これは、後でイベントをトラップして色を設定する際に役立ちます。
  • グリッドの各要素で onClicked/onSelected/onTouched をトラップします。行と列ごとに for ループを使用してこれを行うことができます。
  • 最初に、左右の境界線をダイアル/ストレートに描くなどの名目上の変更を行います - これにより、選択したアイテムのユーザー識別が得られます。
  • 選択した要素が適切な単語を構成する場合は、それらの要素の背景色を変更します。

しかし、ここでは要素について多くのことを考慮する必要があります: 要素が直線の行または列で選択されている場合、すべてのグリッド要素の背景を直接設定できます。ただし、斜めに選択されている場合は、Drawable を使用して適切に色を付ける必要があります。指定された色のドローアブルをプログラムで作成して解決することができます。

更新しました :

XML では、gridLayout を指定するだけです。

onCreate() のアクティビティでは、次のように作業してコンテンツを追加できます。

grid = (GridLayout) findViewById(R.id.myGrid);
TextView tv = null;
ViewGroup tvLayParams = null;

for (row=0; row < totalRows; row++) {
   for (cols = 0; cols < totalCols; col++) {
        // Create View
        tv = new TextView();
        tv.setId("r" + row + "_c" + cols);   // 1st row ids will be = r0_c0, r0_c1, r0_c2, r0_c3, etc
        // Set properties like backgound color, etc of button

        tvLayParams = (ViewGroup.LayoutParams) tv.getLayoutParams();
        // SET LayoutParams for Button
        tv.setLayoutParams(btnLayParams);

        tv.setOnClickListener(this);
        tv.setOnTouchListener(this);
        grid.addView(tv);
   }
} 


@Override
public void onClick(View v) {
    TextView tv = (TextView)v;
    String id = tv.getId();  // From this you can get the Row & col of the item selected
    int row = ;  // For row, get digit(s) betweeen "r" and "_".
    int col = Integer.parseInt(id.indexOf("c")+1);   // For cols, get digit(s) from "c"

    // Draw Borders/shade
    //tv.setDrawable(...);  // Generate drawable based on you need to draw dotted border or background and diagonally or straight.

    // Figure out if the word is created
    // If so, make another shade, else let it remain as currently selected & trying to make word
    // Add your logic
}

これにより、問題のスタートアップが得られます。始めて試してみてください。コードで追加する代わりに、すべてのコンポーネントを XML で追加することもできます。しかし、そうすると XML が非常に長くなり、乱雑になります。

行き詰まった場合は、ご安心ください。改善のために、ボタン ビューを作成するメソッドを作成し、内側の for ループでメソッドを呼び出すだけです。ただし、必要なものを生成することに成功したら、これを実行してください。

ただし、最初に開始して試してみることを忘れないでください。

于 2012-02-04T15:02:59.140 に答える