【问题标题】:Creating custom tabhost like in chrome browser for Android在 Android 的 chrome 浏览器中创建自定义标签主机
【发布时间】:2013-04-08 22:45:40
【问题描述】:

我想为标签等浏览器创建自定义标签主机。我对如何将其应用于图像中的 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 上找不到参考

【问题讨论】:

  • 您不能将它们创建为 xml drawable,九个补丁更合适。
  • @Luksprog 我希望通过 PathShape 以编程方式完成它。有可能通过吗?
  • @intrepidkarthi 你找到解决办法了吗
  • 如果你使用你不能显示超过 5 个标签 .. 你可以吗?
  • 使用九个补丁图像工作正常。

标签: android android-tabhost android-tabs android-browser


【解决方案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 设置为活动的内容视图或将其添加到另一个视图并将其设置为内容视图

【讨论】:

  • 感谢您的回答。我也需要这个解决方案。但我的问题主要是关于标签的设计。
  • 要创建这样的标签,您必须创建自己的标签栏和标签按钮。因为您可以看到活动选项卡在其他选项卡上。你可以把你的按钮放在一个相对的布局中并改变它们的z-index(我不知道这个在android中的名字。所以我在html中使用z-index。但我知道它存在。搜索它)
  • 好的。目前我正在尝试九个补丁图像。我会尽快更新结果。
  • @intrepidkarthi 很高兴我会尝试做同样的事情..我有一个想法...基本上我们可以分别为第一个选项卡选择和取消选择 6 个九个补丁图像 2。 2个用于中间选项卡,2个用于最后一个选项卡。根据位置我们必须设置drawable。我会尝试实施,然后会告诉你我是否会成功。
【解决方案2】:

使用两个九个补丁图像可以正常工作。一个用于活动标签,一个用于非活动标签。

【讨论】:

  • 但是你是如何添加单独的监听器来删除标签上的图标的呢?
  • @AkhileshSk 使用我使用的标签 ID
猜你喜欢
  • 2011-07-15
  • 2013-06-30
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-13
  • 2014-04-08
  • 1970-01-01
  • 2016-09-21
相关资源
最近更新 更多