Android 如何通过单击按钮显示另一个按钮?

Android 如何通过单击按钮显示另一个按钮?,android,Android,我不想创建新的活动。就像这位先生的例子一样http://www.youtube.com/watch?v=V6AdmCIe4Ik,但我想在LinearLayout上使用Button而不是main实现此功能 假设在00:44的视频中,用户单击res/layout/activity1.xml上指定的按钮,子按钮将在00:47显示 他使用菜单来实现它,并在res下创建一个子文件夹菜单,而不是使用布局 我想做的是,一旦用户单击LinearLayout上声明的按钮,它将显示另一个按钮,就像视频上的00:47

我不想创建新的活动。就像这位先生的例子一样http://www.youtube.com/watch?v=V6AdmCIe4Ik,但我想在LinearLayout上使用Button而不是main实现此功能

假设在00:44的视频中,用户单击res/layout/activity1.xml上指定的按钮,子按钮将在00:47显示

他使用菜单来实现它,并在res下创建一个子文件夹菜单,而不是使用布局


我想做的是,一旦用户单击LinearLayout上声明的按钮,它将显示另一个按钮,就像视频上的00:47一样。

使用一个非常简单的XML文件:

<LinearLayout
  android:orientation="vertical"
  android:layout_height="match_parent"
  android:layout_width="match_parent" 
  android:animateLayoutChanges="true">

  <Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="button1" />

  <Button
    android:id="@+id/button2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="button2"
    android:visibility="gone" />

</LinearLayout>

此代码示例为第一个按钮设置事件侦听器,单击时,更改按钮的可见性,这意味着它在布局中不占空间,并且不可见,这是正常状态。

是的……这可以工作,但转换不是那么平滑。另外,第二个按钮应该只有在单击第一个按钮后才能看到。明白了,这就是我在XML中将可见性设置为“gone”的原因。至于过渡的平滑度,让父视图为布局更改设置动画就足够容易了。这是ViewGroup的一个xml属性,因此linearlayout:android:animateLayoutChanges=true。这会告诉线性布局,无论何时发生将修改布局的事情,例如从view.GONE to view.Visible更改视图,都要设置该更改的动画以使其顺利发生-它会为您处理动画。查看更多信息。这是布局转换动画的一个很好的示例:
private Button button1;
private Button button2;

protected void onCreate(Bundle savedInstanceState) {
  setContentView(R.layout.activity1);
  button1 = findViewById(R.id.button1);
  button2 = findViewById(R.id.button2);

  button1.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
      button2.setVisibility(View.VISIBLE);
    }
  });
}