字符按我点击的顺序出现

Characters appear in the order as i click

例如。下面的屏幕顶部有图片,有一些空框,框下方有一些按钮。每个按钮都有一个文本字符("a"、"c"、"t")。您单击一个按钮,按钮的文本出现在框中。你可以按你想要的顺序点击它们,但答案是 "cat" 所以当你按正确的顺序放置字符时,你就会得到祝酒词。

我试着用 TextViews 和 Buttons 来做。当我点击按钮时,我可以让按钮消失,同时出现一个文本视图。但是每个 textview 在屏幕上都有一个固定位置,所以我需要将每个框中的每个字符都隐藏起来,当我单击 "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); 
   }
}

}

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="hu.szada.gombokelso.MainActivity"
android:orientation="horizontal">

<TextView 
    android:id="@+id/tl1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:visibility="invisible"
    android:text="l"/>

<Button
    android:id="@+id/bo"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="86dp"
    android:onClick="onClick"
    android:text="o" />

<Button
    android:id="@+id/bl"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignBaseline="@+id/bg"
    android:layout_alignBottom="@+id/bg"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="36dp"
    android:onClick="onClick"
    android:text="l" />

<Button
    android:id="@+id/bg"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_centerVertical="true"
    android:layout_marginRight="14dp"
    android:layout_toLeftOf="@+id/bo"
    android:onClick="onClick"
    android:text="g" />

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

<TextView
    android:id="@+id/to1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/tl"
    android:layout_alignBottom="@+id/tl"
    android:layout_alignLeft="@+id/tl"
    android:layout_weight="1"
    android:visibility="invisible"
    android:text="o" />

/// 第二个

 <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" />

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

如果我没理解错的话,你想 "type" 使用给定的字母按钮说出一个词。就像那些刽子手风格的游戏之一。

为什么不即时附加文本视图。

类似

@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>

这样您就可以根据您正在玩的单词的长度自定义 rows/columns 的数量。而GridView会自动给你一个整齐的布局和间距。

查看 GridView doc 并按照您想要的方式对其进行自定义。

查看我上面对 Java 代码的编辑。