添加视图到现有布局

时间:2014-11-28 06:30:51

标签: android android-layout

我创建了一个xml布局,一切都很好。单击按钮后,我想在布局上显示更多按钮。这样做的正确方法是什么?现在我在同一个xml上创建按钮,并将其可见性设置为GONE。单击按钮并将其可见性设置为VISIBLE。

这是一种正确的做事方式吗?对于遵循相同模式的其他图像视图,布局变得有点复杂

非常感谢

1 个答案:

答案 0 :(得分:2)

首先:我不确定为什么有人会问你这个问题,因为它非常简单明了。

现在回答。

所以,整个事情,为了正确地制造" ,应该以编程方式完成。  在我给你一些书面代码(例如)之前,我将向你解释一下你应该如何看待它。

你有你的主XML文件,你有一个你想要点击的按钮,点击后,屏幕上会出现更多按钮。好了,为了达到这个目的,创建按钮并使它们无形或可见取决于需要,并不是一个真正的好方法来处理它。你可能会觉得为什么?好吧,它显然不是一个好方法,因为即使你的按钮是不可见的,当应用程序启动时,按钮,即使是不可见的,它们也被创建(绘制)。这将占用空间并减慢应用程序的速度

假设您希望能够在单击第一个按钮时创建不确定数量的按钮。好吧,您甚至无法通过您在问题中描述的方式实现此目的。您真的通过使用XML来限制自己。

解决方案:

所以,你有你的XML文件,你有你的布局(相对或线性,现在无关紧要)和你按下按钮时创建一个按钮。

为了能够引用你的XML Layout和你的Button,你需要给他们一个ID。你在XML中做到这一点(我很确定你知道,但我更喜欢写完整的解释)

为布局提供ID:

   android:id="@+id/thelayout"

为布局提供ID:

   android:id="@+id/button"

(If you don't know where to add those IDs, comment it,I will help further)

现在您可以参考java中的布局和按钮了,这就是它变得有趣的地方。

您定义了布局和按钮。注意:检查您的XML文件!如果你有一个RelativeLayout,你需要定义一个RelativeLayout,如果你有一个LinearLayout ......那么很清楚。

我假设我们有一个LinearLayout。

 LinearLayout ll;
 Button btn;
 Button thenewbutton;

 ll= (LinearLayout)rootView.findViewById(R.id.thelayout);  //The name we gave in XML
 btn = (Button)rootView.findViewById(R.id.button);

 What we need to do now, is to add a method which will do something when we click the buttom.

 btn.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            //Here we will handle the creation of the button;

            thenewbutton = new Button(getActivity()); //Created the new button
            thenewbutton.setText("One of the new buttons"); //Setted it the text in between the ""            
            setVisibility(View.VISIBLE); //Making it visible -like you were doing prolly.

            //You can customize your button via methods.Write "thenewbutton." and eclipse will show you all the methods you can use in order to "play" with the new created button.

            //Now, the button is created.All we need to do is to add it to the layout!Easy job.                

            ll.addView(thenewbutton);

            return true;
        }
    });

就是这样,非常。

我已经尽可能详细地解释了它。我知道要阅读很多,但是如果你想真正理解,那么花3-5分钟阅读并真正完成我写的所有内容你会有另一个层次理解这个问题。

如果您需要进一步的帮助,请发表评论!

干杯!