如何在android中搜索与搜索类似的栏

时间:2011-11-16 20:44:37

标签: android android-ui

我已经尝试了很多天研究这个问题。我真的不知道如何开始做一个非常类似的风格,如下所示。我知道它包含一个按钮和一个edittext。但是,我不知道如何开始。有没有人有类似风格的酒吧的示例代码? Androdi search bar style

2 个答案:

答案 0 :(得分:4)

Android搜索栏是原生和自定义元素的混合。

搜索栏使用的布局可以在此路径的android源代码中找到(对于我可以在硬盘上的2.1版本):

框架/碱/核心/ RES / RES /布局/ search_bar.xml

您可以在下面找到布局的详细信息:

<view
    xmlns:android="http://schemas.android.com/apk/res/android"
    class="android.app.SearchDialog$SearchBar"
    android:id="@+id/search_bar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:focusable="true"
    android:descendantFocusability="afterDescendants">

    <!-- Outer layout defines the entire search bar at the top of the screen -->
    <LinearLayout
        android:id="@+id/search_plate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingLeft="12dip"
        android:paddingRight="12dip"
        android:paddingTop="7dip"
        android:paddingBottom="16dip"
        android:background="@drawable/search_plate_global" >

        <!-- This is actually used for the badge icon *or* the badge label (or neither) -->
        <TextView 
            android:id="@+id/search_badge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="2dip"
            android:drawablePadding="0dip"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="?android:attr/textColorPrimaryInverse" />

        <!-- Inner layout contains the app icon, button(s) and EditText -->

       <LinearLayout
            android:id="@+id/search_edit_frame"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/search_app_icon"
                android:layout_height="36dip"
                android:layout_width="36dip"
                android:layout_marginRight="7dip"
                android:layout_gravity="center_vertical"
            />

            <view class="android.app.SearchDialog$SearchAutoComplete"
                android:id="@+id/search_src_text"
                android:background="@drawable/textfield_search"
                android:layout_height="wrap_content"
                android:layout_width="0dip"
                android:layout_weight="1.0"
                android:paddingLeft="8dip"
                android:paddingRight="6dip"
                android:drawablePadding="2dip"
                android:singleLine="true"
                android:ellipsize="end"
                android:inputType="text|textAutoComplete"
                android:dropDownWidth="fill_parent"
                android:dropDownHeight="fill_parent"
                android:dropDownAnchor="@id/search_plate"
                android:dropDownVerticalOffset="-9dip"
                android:popupBackground="@android:drawable/search_dropdown_background"
            />

            <!-- This button can switch between text and icon "modes" -->
            <Button 
                android:id="@+id/search_go_btn"
                android:background="@drawable/btn_search_dialog"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
            />

            <ImageButton
                android:id="@+id/search_voice_btn"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_marginLeft="8dip"
                android:background="@drawable/btn_search_dialog_voice"
                android:src="@android:drawable/ic_btn_speak_now"
            />
        </LinearLayout>
    </LinearLayout>
</view>

所有drawable和样式也在源代码中。

要完全相同,您必须复制自己项目中的不同元素。

您可能还需要查看不同的类:

  • SearchDialog.SearchBar
  • SearchDialog.SearchAutoComplete

答案 1 :(得分:1)

我从您的问题中假设您希望将EditText和Button放在与Google搜索相同的行中,而不是谷歌搜索实施。在Android Activity的主要LinearLayout中使用以下代码段。

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="2" />



    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />
</LinearLayout>

如果您不理解我的意思,请告诉我。

此致