Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击时,字符按顺序显示_Android_Button_Textview - Fatal编程技术网

Android 单击时,字符按顺序显示

Android 单击时,字符按顺序显示,android,button,textview,Android,Button,Textview,比如说。屏幕顶部有一张图片,下面是一些空框,下面是一些按钮。每个按钮都有一个文本字符(“a”、“c”、“t”)。单击一个按钮,该按钮的文本将显示在框中。你可以按你想要的顺序点击它们,但答案是“cat”,所以当你把字符按正确的顺序排列时,你就可以干杯了 我试着用文本视图和按钮来做。我可以使按钮消失,当我点击它和一个文本视图出现在同一时间。但是每个文本视图在屏幕上都有一个固定的位置,所以我需要将每个框中的每个字符都设置为不可见,当我单击“c”字符时,它会显示在第一个框中,而其他“c”字符保持不可见。

比如说。屏幕顶部有一张图片,下面是一些空框,下面是一些按钮。每个按钮都有一个文本字符(“a”、“c”、“t”)。单击一个按钮,该按钮的文本将显示在框中。你可以按你想要的顺序点击它们,但答案是“cat”,所以当你把字符按正确的顺序排列时,你就可以干杯了

我试着用文本视图和按钮来做。我可以使按钮消失,当我点击它和一个文本视图出现在同一时间。但是每个文本视图在屏幕上都有一个固定的位置,所以我需要将每个框中的每个字符都设置为不可见,当我单击“c”字符时,它会显示在第一个框中,而其他“c”字符保持不可见。但是如果我先点击“a”,它就会出现在第二个框中,因为有太多的变化而无法全部完成。我不擅长解释,但如果有人知道如何更容易解释,请回答

这是我的密码:

    public class MainActivity extends ActionBarActivity implements OnClickListener{

Button b1;
Button b2;
Button b3;

TextView tg1;
TextView tg2;
TextView tg3;

TextView to1;
TextView to2;
TextView to3;

TextView tl1;
TextView tl2;
TextView tl3;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    b1 = (Button)findViewById(R.id.bg);
    b1.setOnClickListener(this);
    b2 = (Button)findViewById(R.id.bo);
    b2.setOnClickListener(this);
    b3 = (Button)findViewById(R.id.bl);
    b3.setOnClickListener(this);

    tg1 = (TextView)findViewById(R.id.tg1);
    tg2 = (TextView)findViewById(R.id.tg2);
    tg3 = (TextView)findViewById(R.id.tg3);

    to1 = (TextView)findViewById(R.id.to1);
    to2 = (TextView)findViewById(R.id.to2);
    to3 = (TextView)findViewById(R.id.to3);

    tl1 = (TextView)findViewById(R.id.tl1);
    tl2 = (TextView)findViewById(R.id.tl2);
    tl3 = (TextView)findViewById(R.id.tl3);

}

@Override
public void onClick(View v) {
     switch(v.getId()) {
     case R.id.bg:
         b1.setVisibility(View.INVISIBLE);
         tg1.setVisibility(View.VISIBLE);
         tg2.setVisibility(View.INVISIBLE);
         tg3.setVisibility(View.INVISIBLE); 
       break;
     case R.id.bo:
         b2.setVisibility(View.INVISIBLE); 
         to2.setVisibility(View.VISIBLE);
         to1.setVisibility(View.INVISIBLE);
         to3.setVisibility(View.INVISIBLE); 

       break;
     case R.id.bl:
         b3.setVisibility(View.INVISIBLE);
         tl3.setVisibility(View.VISIBLE);
         tl2.setVisibility(View.INVISIBLE);
         tl1.setVisibility(View.INVISIBLE); 
   }
}
}


///第二

 <TextView
     android:id="@+id/to2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignBaseline="@+id/tl1"
     android:layout_alignBottom="@+id/tl1"
     android:layout_marginLeft="19dp"
     android:layout_toRightOf="@+id/tl1"
     android:layout_weight="1"
     android:visibility="invisible"
     android:text="o" />

 <TextView
     android:id="@+id/tg2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignBaseline="@+id/to2"
     android:layout_alignBottom="@+id/to2"
     android:layout_alignLeft="@+id/to2"
     android:layout_weight="1"
     android:visibility="invisible"
     android:text="g" />

 <TextView
     android:id="@+id/tl2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignBaseline="@+id/to2"
     android:layout_alignBottom="@+id/to2"
     android:layout_alignRight="@+id/to2"
     android:layout_weight="1"
     android:visibility="invisible"
     android:text="l" />

 /// Third


   <TextView
       android:id="@+id/tg3"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBaseline="@+id/to2"
       android:layout_alignBottom="@+id/to2"
       android:layout_alignRight="@+id/bl"
       android:layout_weight="1"
       android:visibility="invisible"
       android:text="g" />

   <TextView
       android:id="@+id/tl3"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBaseline="@+id/tg3"
       android:layout_alignBottom="@+id/tg3"
       android:layout_alignLeft="@+id/tg3"
       android:layout_weight="1"
       android:visibility="invisible"
       android:text="l" />

   <TextView
       android:id="@+id/to3"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignBaseline="@+id/tg3"
       android:layout_alignBottom="@+id/tg3"
       android:layout_toRightOf="@+id/tl3"
       android:layout_weight="1"
       android:visibility="invisible"
       android:text="o" />

///第三

您可能想尝试一种稍微不同的方法

如果我理解正确,您希望使用给定的字母按钮“键入”一个单词。就像一个刽子手风格的游戏

为什么不动态附加文本视图呢

差不多

@Override
public void onClick(View v) {

    //Grab the surrounding layout for the textviews
    GridView answerGrid = (GridView)getViewById(R.id.answerGrid);

    //Get the text that was on the button
    Button b = (Button)v;
    String btnText = b.getText().toString();

    //Make a text view with text
    TextView txt = new TextView();
    text.setText(btnText);

    //Append to text view container
    answerGrid.addView(txt);

    //Invisible button
    b.setVisibility(View.INVISIBLE);
}
我还没有测试过这是否完美,但这只是一个开始

=====

我已经看过你的xml了

为什么不使用GridView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                ....>
    <GridView android:id="@+id/answerGrid"
              ....>
         <!-- Put nothing here. This is for answers -->
    </GridView>

    <GridView android:id="@+id/lettersGrid"
              android:layout_below="answerGrid"
              ....>
        <!-- Buttons in here -->
    </GridView>

</RelativeLayout>

通过这种方式,您可以根据正在播放的单词的长度自定义行/列的数量。GridView将自动为您提供整洁的布局和间距

请查看,并按照您的需要进行定制


有关Java代码,请参见我上面的编辑。

谢谢您的回答,是的,您理解我,我想在《刽子手》风格的游戏中这样做。我发布了我的xml,也许它能帮上忙。很高兴听到这个消息,是的,xml会帮助我做出更具体的回答。我正试图用你的代码来做这件事,但我不理解你的布局的第一步。你能解释一下吗?第一行只是得到一个对部分布局的引用,所以稍后我们可以告诉android把文本视图放在哪里。请看我的编辑,希望XML更清晰。非常感谢!最后,我有时间尝试它,它的工作!
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                ....>
    <GridView android:id="@+id/answerGrid"
              ....>
         <!-- Put nothing here. This is for answers -->
    </GridView>

    <GridView android:id="@+id/lettersGrid"
              android:layout_below="answerGrid"
              ....>
        <!-- Buttons in here -->
    </GridView>

</RelativeLayout>