Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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_Xml - Fatal编程技术网

Android:以编程方式获取布局参数并复制视图

Android:以编程方式获取布局参数并复制视图,android,xml,Android,Xml,假设您有一个在xml文件中创建的文本视图。我想知道是否有可能以编程方式复制此视图的布局参数,而不必再次以编程方式将它们全部写出。或者,您可以创建一个新的TextView,使其与原始视图相同,然后将其附加到将要添加的新视图 我尝试了后一种方法,但遇到了这样的错误: 08-09 22:04:55.253: E/AndroidRuntime(1848): Caused by: java.lang.IllegalStateException: The specified child already ha

假设您有一个在xml文件中创建的文本视图。我想知道是否有可能以编程方式复制此视图的布局参数,而不必再次以编程方式将它们全部写出。或者,您可以创建一个新的TextView,使其与原始视图相同,然后将其附加到将要添加的新视图

我尝试了后一种方法,但遇到了这样的错误:

08-09 22:04:55.253: E/AndroidRuntime(1848): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

但是,即使在我尝试从初始视图中删除它们之后,这个错误仍然会存在。有什么想法吗?或者这完全是不可行和愚蠢的。

您总是可以从同一个xml中膨胀一个新的
视图
Adapter
类一直都在这样做,例如在
ListView
s中,如果适配器是来自同一xml资源的行,那么它将对所有行进行充气

当然,您可以使用获取镜面反射文本视图的布局参数

TextView myTextView=(TextView) findViewById(<your-TextView's-id>);
ViewGroup.LayoutParams layPar=myTextView.getLayoutParams();

你说的“和原来的一样”是什么意思?你做过类似textView2=textView1的事情吗?我的意思是让它具有所有相同的属性:比如重力、边距和文本大小。@Collin的建议完全符合我的想象。当然,但你说你试过了。您得到的异常表明您确实尝试添加相同的textview,我想知道您是否理解为什么
textview textView2=new textview();textView2=textVew1;myLayout.add(文本视图2)会失败吗?哦,对不起,我现在明白你的意思了,我不知道。我想我对它为什么不起作用的假设是因为原始视图是静态设置的,即使调用它也无法删除。这是对的吗?谢谢你,我从没想过要这样做。这很有效,我很高兴!如果它对您有效,您可以将其标记为已接受,以便将来的读者知道什么是有效的。如果你有任何后续问题,我会在这里提供帮助。尽管下面的答案同样有效,我还是选择了这个答案,因为它最简化了我的情况。现在我很好奇如何处理新观点的事件。当您使用
适配器时
可以管理作为一个整体添加的每个“项目”上的单击。但是假设我膨胀的视图包含
EditText
视图,我将如何处理这些视图。我的想法是创建一个定制的
适配器
,但我觉得可能有一种更简单的方法。我只是想了解一下这方面的一些想法。有一个专门用于此目的的listener类。我得到NullException,因为myTextView中可能没有LayoutParams。在我的XML中,我已经设置了很多这样的参数。@请确保在视图连接到其父视图后调用getLayoutParams()。
newView.addView(newTextView);