Android:如何构建类似Android UI页面上显示的标签

S.A*_*Jay 6 android android-ui android-layout android-tabhost

因此,android不遗余力地为每个人构建这个漂亮的UI指南.但我没有看到任何地方显示如何构建这些元素的代码示例.

可在此处找到选项卡的UI准则.http://developer.android.com/design/building-blocks/tabs.html.

有谁知道如何创建像这样的标签? 在此输入图像描述

任何帮助将不胜感激,谢谢.

解决方案张贴
好了,所以这就是我最后做的事情,可能是浪费了大约10个小时试图做出一些好看的标签.
在此输入图像描述

首先,我废弃了使用android的tab实现的整个想法.出于一个原因,选项卡主机小部件被假定为操作栏不推荐使用,但操作栏仅适用于Android 3.

我终于弄清楚,如果使用线性布局并作为线性布局的背景,我会放置我想要使用的图像(使用9个补丁图像).然后创建另一个linearlayout和textview,以便将文本放在该linearlayout的顶部.然后使您的线性布局可点击.然后,当您获得更高级时,您可以使线性布局背景成为xml选择器,您很高兴.如果你没有得到所有这些是我的代码.

的LinearLayout

    <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:background="@color/main_screen_bg_color"
    android:orientation="horizontal"
    android:padding="2dp" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="@drawable/selector_not_current"
        android:clickable="true"
        android:onClick="onClickSub"
        android:orientation="horizontal" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:text="Example 1"
                android:textColor="@color/black"
                android:textSize="18sp"
                android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="@drawable/selector_current"
        android:clickable="true"
        android:onClick="onClickFoodDetails"
        android:orientation="horizontal" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:text="Example 2"
                android:textColor="@color/black"
                android:textSize="18sp"
                android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

示例选择器

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
      android:drawable="@drawable/selected_pressed_tab" /> <!-- pressed -->
<item android:state_focused="true"
      android:drawable="@drawable/selected_pressed_tab" /> <!-- focused -->
<item android:drawable="@drawable/selected_tab" /> <!-- default -->
Run Code Online (Sandbox Code Playgroud)

希望这有助于每个人.Android标签太难以令人讨厌,因为从头开始创建我自己更容易.祝好运!

Jav*_*tor 5

做这样的事情.

这是一个完整的工作代码.请享用

某些地方在oncreate活动方法中扩展Tabactivity

  tabHost = getTabHost();
  Intent intent;
  intent = new Intent().setClass(this, FirstActvity.class);
  setupTab("NearBy", intent, R.drawable.firsttabdrawable);
  intent = new Intent().setClass(this, SecondActivity.class);
  setupTab("History", intent, R.drawable.secondtabdrawable);
  intent = new Intent().setClass(this, ThirdActivity.class);
  setupTab("Setting", intent, R.drawable.thirdtabdrawable);
Run Code Online (Sandbox Code Playgroud)

将setupTab方法定义为

  private void setupTab(String tag, Intent intent, int selectorId) {
  View tabView = LayoutInflater.from(tabHost.getContext()).inflate(R.layout.view, null);
  tabView.setBackgroundResource(selectorId);
  TabSpec setContent = tabHost.newTabSpec(tag).setIndicator(tabView).setContent(intent);
  tabHost.addTab(setContent);
  }
Run Code Online (Sandbox Code Playgroud)

view.xml为

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

和drawable文件夹中的firsttabdrawable.xml为

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <!-- When selected, use grey -->
   <item android:drawable="@drawable/selectedfirsttabimage"
      android:state_selected="true" />
   <!-- When not selected, use white-->
   <item android:drawable="@drawable/notselectedfirsttabimage" />
</selector>
Run Code Online (Sandbox Code Playgroud)

以相同的方式定义secondtabdrawable.xml和thirddrawable.xml