【发布时间】:2015-12-22 17:52:30
【问题描述】:
我正在实现由搜索框和类别列表组成的搜索功能。出于设计目的,我使用了 EditText 、 GridView 等。
但是当活动开始时,我不希望显示所有搜索框。我只想要EditText,然后当点击EditText 时我需要展开视图,当点击屏幕的其他部分时,例如触摸ListView 或按下按钮我需要视图以包含EditText 的默认状态折叠。
我可以使用View.GONE 或VIEW.VISIBLE,但我想实现平滑的展开和折叠动画。
我的activity_layout.xml:
<RelativeLayout
android:id="@+id/search_box"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:background="@android:color/transparent"
>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/njoftime_item_background"
card_view:cardCornerRadius="1dp"
card_view:cardElevation="2dp">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:id="@+id/sr"
android:animateLayoutChanges="true"
android:padding="20dp">
<RelativeLayout
android:layout_width="fill_parent"
android:id="@+id/search_area"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:background="@drawable/njoftime_item_background"
>
<ImageButton
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_marginLeft="1dp"
android:id="@+id/btn_search"
android:layout_alignParentRight="true"
android:background="@color/njoftime_main_color"
android:src="@drawable/ic_search_white"
android:onClick="searchPressed"
android:scaleType="fitCenter"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_toLeftOf="@+id/btn_search"
android:id="@+id/search_text"
android:layout_alignParentLeft="true"
android:background="@null"
android:ems="20"
android:textSize="18sp"
android:paddingLeft="10dp"
android:imeOptions="actionSearch"
android:inputType="text"
android:maxLines="1"
android:textColor="@color/njoftime_desc"
android:textCursorDrawable="@null"
/>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/search_categories_area"
android:layout_below="@+id/search_area"
android:paddingTop="20dp"
android:paddingBottom="10dp"
>
<GridView
android:id="@+id/search_grid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:drawSelectorOnTop="false"
android:horizontalSpacing="2dp"
android:numColumns="5"
android:padding="4dp"
android:verticalSpacing="4dp" >
</GridView>
</RelativeLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
为此,我使用了android:animateLayoutChanges="true" 和以下代码
my_relative_layout = (RelativeLayout) findViewById(R.id.search_categories_area);
与:
public void searchPressed(View v) {
if (!searchbox_expanded) {
my_relative_layout.setVisibility(View.VISIBLE);
searchbox_expanded = true;
} else {
my_relative_layout.setVisibility(View.GONE);
searchbox_expanded = false;
}
}
嗯,展开是非常流畅的动画,但折叠不是动画。
我在网上使用过其他解决方案,但由于我认为复杂的布局,我没有达到预期的效果。任何解决方案将不胜感激。
【问题讨论】:
标签: android