字母出现按钮消失

时间:2015-06-20 14:45:24

标签: android

我希望我的申请中包含这些字母。

enter image description here

我用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() {

            }

        });
    }

} }

3 个答案:

答案 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)

我不完全确定我是否明白你的观点,但如果你试图使用屏幕按钮上的按钮作为一种单向按键(每个按钮只能按下按钮而字母出现在像按钮点击一样的排序)然后我会像这样实现它:

  • 引入一个成员变量,该变量包含您尝试键入的单词的当前索引
  • 为“OneWayKeyboard”的每个按钮添加一个监听器,该按钮将首先将按钮上的字符添加到您正在键入的单词(借助成员变量中的索引),然后将按钮的可见性设置为bool flag1=false

如果您想拥有一个先进而干净的解决方案,我建议您为键入的单词创建一个CompoundView,并为“OneWayKeyboard”创建一个。如果您想了解如何在Android中创建视图,请查看Lars Vogel的以下教程: http://www.vogella.com/tutorials/AndroidCustomViews/article.html