グリッド内の文字を定義し、選択した文字を強調表示し、有効な単語の場合は強調表示します。文字を定義してグリッド ビューで表示できます。しかし、選択時に図のように単語を強調表示するにはどうすればよいですか?? 私は同様のアプリを開発しています。助けてください。
Androidマーケットの単語検索アプリから画像をコピーしました。
グリッド内の文字を定義し、選択した文字を強調表示し、有効な単語の場合は強調表示します。文字を定義してグリッド ビューで表示できます。しかし、選択時に図のように単語を強調表示するにはどうすればよいですか?? 私は同様のアプリを開発しています。助けてください。
Androidマーケットの単語検索アプリから画像をコピーしました。
しかし、ここでは要素について多くのことを考慮する必要があります: 要素が直線の行または列で選択されている場合、すべてのグリッド要素の背景を直接設定できます。ただし、斜めに選択されている場合は、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 ループでメソッドを呼び出すだけです。ただし、必要なものを生成することに成功したら、これを実行してください。
ただし、最初に開始して試してみることを忘れないでください。