我希望我的申请中包含这些字母。
我用TextViews和Buttons尝试了一切。我使用了GridView和GridLayout,但它没有用。我可以让按钮消失并显示按钮的文字。我的主要问题是当我点击" a"首先它出现在第二个框中,因为有正确的位置。但它出现在第一个框中。因此,当我点击时,我不能使字母显示顺序。如果有人知道如何做,请回复。
这是我的代码:
int fillFactor = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String word = "SAMSUNG";
final LinearLayout linear = (LinearLayout)findViewById(R.id.linear);
for(int i=0;i<word.length();i++){
Button b = new Button(this);
b.setTag(word.charAt(i));
b.setLayoutParams(new LinearLayout.LayoutParams(48,48));
linear.addView(b);
}
for(int j=0;j<word.length();j++){
Button bn = new Button(this);
bn.setTag(word.charAt(j));
bn.setLayoutParams(new LinearLayout.LayoutParams(48,48));
linear.addView(bn);
bn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(fillFactor < word.length())
fillFactor++;
Button view = null;
Button clickedview = view;
//find a correct button
Button leftButton = ((Button)linear.getChildAt(fillFactor));
if((boolean)leftButton.getTag().equals((String)clickedview.getTag()));
leftButton.setText((CharSequence) clickedview.getTag());
if(checkComplete()) moveToNextWordActivity();
else {
Toast.makeText(MainActivity.this, "Invalid character", Toast.LENGTH_LONG).show();
fillFactor--;
}
}
private boolean checkComplete() {
return fillFactor == word.length() - 1;
}
private void moveToNextWordActivity() {
}
});
}
} }
答案 0 :(得分:1)
我的想法是这样的:
制作一个你需要找到的单词的 A B
0 BULL APPLE X2 +200
1 BEAR APPLE X3 -300
2 BULL GOOG 2X +200
3 BEAR GOOG 3X -300
4 BULL TSLA +100
5 BEAR TSLA -100
6 FOO BAR +100
数组。
忘记初始化Button
上的所有按钮。
另外,制作一个大小相同的onCreate()
数组。
int
将数组中的所有数字设置为0;
Button[] letters = new Button[size];
int[] arr = new int[size];
现在,每次用户按下一个字母,搜索等于0的第一个变量时,我们称之为for(int i = 0; i < size; i++)
{
arr[i] = 0;
}
。
将i
数组中Button
的文字更改为您需要的字母,将i
int
更改为1。
i
//我建议检查所有数组,以防用户删除其中一个中间字母,但它也会以这种方式工作。我这样做是为了简单起见
现在,这个词中的所有字母。
当放置最后一个字母时,将调用函数@Override
public void onClick(View v)
{
for(int i = 0; i < size; i++)
{
if(arr[i] == 0)
{
arr[i] = 1;
letters[i].setText(view.getText().toString());
break;
}
}
if(arr[size-1] == 1)
{
test();
}
}
。
此函数将获取该字母并将其转入单词(test()
):
String
public void test()
{
String word = "";
for(int i = 0; i < size; i++)
{
word += letters[i].getText().toString();
}
if(word == requested_word)
{
doSomething(); // winning notification or what you need to do
}
}
是您需要找到的词。
请记住,你可以做得更好,这是基本概念。 另外,我没有使用ide检查代码,我可能只有很少的错字。
晚安并继续编码;)答案 1 :(得分:0)
例如,您可能有'SAMSUNG'字。
初始化包含所有按钮的父级
String word = "SAMSUNG";
LinearLayout linear = new LinearLayout(context);// or use findViewById
// make linear layout horizontal
添加填充按钮:
for(int i=0;i<word.length();i++){
Button b = new Button(context);
b.setTag(word.charAt(i));
b.setLayoutParams(new LinearLayout.LayoutParams(48,48));
linear.addView(b);
}
键盘按钮添加方式相同:设置标签相关字符。
初始化fillFactor值:
int fillFactor = -1;
当您点击KEYBOARD上的任何按钮时:
OnClick(...) {
if(fillFactor < word.length())
fillFactor++;
Button clickedView = view;
//find a correct button
Button leftButton = ((Button)linear.getChildAt(fillFactor));
if((String)leftButton.getTag().equals((String)clickedView.getTag())
leftButton.setText(clickedView.getTag());
if(checkComplete()) moveToNextWordActivity();
else {
showErrorToast("Invalid character");
fillFactor--;
}
}
public boolean checkComplete() {
return fillFactor == word.length - 1;
}
答案 2 :(得分:0)
我不完全确定我是否明白你的观点,但如果你试图使用屏幕按钮上的按钮作为一种单向按键(每个按钮只能按下按钮而字母出现在像按钮点击一样的排序)然后我会像这样实现它:
bool flag1=false
如果您想拥有一个先进而干净的解决方案,我建议您为键入的单词创建一个CompoundView,并为“OneWayKeyboard”创建一个。如果您想了解如何在Android中创建视图,请查看Lars Vogel的以下教程: http://www.vogella.com/tutorials/AndroidCustomViews/article.html