我正在尝试在我的资源中查找 View 包含 background="@+id/play_bubble"的实例,并将该 View 替换为自定义 View Bubble。
所以当前的 View
看起来像这样:
<View
android:id="@+id/obstacle3"
android:layout_height="@dimen/obstacle_width"
android:layout_width="@dimen/obstacle_width"
android:background="@drawable/play_bubble"
android:layout_alignParentLeft="true"
android:layout_above="@id/obstacle2" />
我希望它找到包含特定背景的所有 View 对象,而不考虑其他属性。不过我没有得到任何结果。
替换后的最终结果应该是这样的:
<Bubble
android:id="@+id/obstacle3"
android:layout_height="@dimen/obstacle_width"
android:layout_width="@dimen/obstacle_width"
android:background="@drawable/play_bubble"
android:layout_alignParentLeft="true"
android:layout_above="@id/obstacle2" />
非常感谢任何帮助。
编辑:
这是我正在处理的界面。我根本不熟悉正则表达式,所以我不确定我输入的内容是否正确,但它没有返回任何结果。 Find/Replace
最佳答案
既然您提到了简单的查找/替换,那么这个正则表达式应该可以做到。
查找:<View(\s+[^>]*?)background="@\+id/play_bubble"([^>]*?/>)
替换:<Bubble$1background="something_new"$2
格式化:
<View
( # (1 start)
\s+
[^>]*?
) # (1 end)
background="@\+id/play_bubble"
( # (2 start)
[^>]*?
/>
) # (2 end)
关于Android 结构化查找和替换 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34122402/