我想为类似标签的浏览器创建自定义tabhost。我很困惑如何将它应用于像Chrome浏览器标签中那样的布局,如图中所示。
这是我尝试过的。我想知道如何使用斜率创建边缘,如图中所示。
tab_selected.xml
<item>
<shape android:shape="rectangle" >
<solid android:color="#DCDCDC" />
<corners
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
</shape>
</item>
<item
android:bottom="2dp"
android:left="1dp"
android:right="1dp"
android:top="1dp">
<shape android:shape="rectangle" >
<solid android:color="#DCDCDC" />
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
</shape>
</item>
tab_unselected.xml
<item android:top="10dp">
<shape android:shape="rectangle" >
<solid android:color="#AAAAAA" />
</shape>
</item>
<item android:bottom="2dp">
<shape android:shape="rectangle" >
<solid android:color="#AAAAAA" />
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
</shape>
</item>
我希望可以在XML中使用Pathshape来完成。任何人都可以指出我的参考?无法在PathShape上找到引用
答案 0 :(得分:1)
将页面放在FrameLayout中,还有一个hashmap(带有特定的名称)。然后你可以像这样改变标签
FrameLayout fl =new FrameLayout(context);
HashMap<String,LinearLayout> tabs =new HashMap<String,LinearLayout>();
LinearLayout tab =new LinearLayout(context);
fl.addView(tab);
tabs.put("home",tab);
tab =new LinearLayout(context);
fl.addView(tab);
tabs.put("events",tab);
private void changeTab(String tabKey) {
for (java.util.Map.Entry<String, LinearLayout> e : tabs.entrySet()) {
if (e.getKey().compareTo(key) == 0) {
e.getValue().setVisibility(View.VISIBLE);
} else {
e.getValue().setVisibility(View.INVISIBLE);
}
}
}
use this to change tab:
changeTab("home");
注意:您必须将fl设置为活动的内容视图,或将其添加到另一个视图并将其设置为contentview
答案 1 :(得分:0)
它有两个九个补丁图像正常工作。一个用于活动选项卡,一个用于非活动选项卡。