如何在任意位置而不是最后一个位置插入标签?

时间:2018-07-12 10:10:29

标签: android android-tabhost

我可以使用TabHost方法将新标签添加到addTab()。但这总是将标签添加为最后一个标签。如何在除TabHost中的最后一个位置之外的其他位置添加标签?例如,如何将新标签作为第一个标签插入或插入其他任意位置?

我不想使用XML,但是所有操作都应以编程方式完成。

我想到的一个解决方案是,首先通过在clearAllTabs()上调用TabHost来删除所有标签,然后按照我想要的顺序重新添加所有标签。但这当然是一个非常棘手的解决方案。没有更好的了吗?

1 个答案:

答案 0 :(得分:1)

显然没有。如果您查看DECLARE l_xsl xmltype := xmltype(style_sheet_json); l_xml xmltype; l_json xmltype; l_out clob; BEGIN l_xml := XMLTYPE ( '<ROWSET> <ROW> <ID>4</ID> <DENOPAIS>Afganistán</DENOPAIS> </ROW> </ROWSET>'); dbms_output.put_line('Using explicit conversion of character entities :'); l_json := l_xml.transform(l_xsl); l_out := dbms_xmlgen.convert(l_json.getclobval(), dbms_xmlgen.ENTITY_DECODE); dbms_output.put_line(l_out); dbms_output.new_line; dbms_output.put_line('Using SQL function XMLTransform :'); select xmltransform(l_xml, l_xsl) into l_json from dual; l_out := l_json.getclobval; dbms_output.put_line(l_out); dbms_output.new_line; dbms_output.put_line('Using SQL functions XMLTransform and XMLCast :'); select xmlcast(xmltransform(l_xml, l_xsl) as clob) into l_out from dual; dbms_output.put_line(l_out); END; / Using explicit conversion of character entities : {"ROWSET":{"ROW":{"ID":4,"DENOPAIS":"Afganistán"}}} Using SQL function XMLTransform : {"ROWSET":{"ROW":{"ID":4,"DENOPAIS":"Afganistán"}}} Using SQL functions XMLTransform and XMLCast : {"ROWSET":{"ROW":{"ID":4,"DENOPAIS":"Afganistán"}}} PL/SQL procedure successfully completed. 源代码,则向TabHost添加内容的唯一方法是通过mTabSpecs方法。扩展类也无济于事,因为列表为addTab

因此,正如您所说的那样,使用private是最省事的方式。我认为用例本身并不简单,因此我可以理解为什么实现这种行为不是那么简单。但是我不会称其为“非常hacky”的解决方案。没有进行Java反射,它只是使视图容器无效并向其中添加新的视图列表。它不会影响性能,内存,可读性,也不会因为SDK更新或类似问题而中断。所以我很确定这是完全可以的。