我引用此链接向上滚动回收:
https://mzgreen.github.io/2015/02/28/How-to-hideshow-Toolbar-when-list-is-scrolling(part2)/
这是我的结果: enter image description here
我的活动:
public class PartOneActivity extends AppCompatActivity {
private Toolbar mToolbar;
private EditText editTextSearcch;
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppThemeRed);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
initEditTextSearch();
initRecyclerView();
}
private void initEditTextSearch() {
editTextSearcch = (EditText) findViewById(R.id.editTextSearch);
}
private void initRecyclerView() {
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
RecyclerAdapter recyclerAdapter = new RecyclerAdapter(createItemList());
recyclerView.setAdapter(recyclerAdapter);
recyclerView.addOnScrollListener(new HidingScrollListener() {
@Override
public void onHide() {
hideViews();
}
@Override
public void onShow() {
showViews();
}
});
}
private void hideViews() {
editTextSearcch.animate().translationY(-editTextSearcch.getHeight()).setInterpolator(new AccelerateInterpolator(2));
}
private void showViews() {
editTextSearcch.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2));
}
private List<String> createItemList() {
List<String> itemList = new ArrayList<>();
for(int i=0;i<20;i++) {
itemList.add("Item "+i);
}
return itemList;
}
}
activity_main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="pl.michalz.hideonscrollexample.PartOneActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignTop="@+id/editTextSearch" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"/>
<EditText
android:id="@+id/editTextSearch"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginTop="55dp"
android:hint="Input text" />
</RelativeLayout>
当我向下滚动时,EditText显示并且正常。但是当向上滚动时,EditText不会隐藏,它仍然出现在ToolBar
上我想也许我设置的位置显示和隐藏的值是不正确的,但是如何设置值来隐藏EditText。您可以在我的附件文件中查看照片
答案 0 :(得分:0)
您可以为编辑文本设置Visibility GONE,可能有效
答案 1 :(得分:0)
因此,如果我正确理解您的问题 - 您只需在AppBarLayout中使用Toolbar并对包含它的RecyclerView或ViewGroup应用特殊行为。你提到的教程看起来很糟糕,不是你的默认方法吗?你正在使用的那个教程提到它已经过时了,请使用他最新的sample! 我更喜欢这样的方法:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<EditText android:layout_width="match_parent" android:layout_height="wrap_content"/>
<android.support.v7.widget.RecyclerView android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
答案 2 :(得分:0)
问题是布局中元素的顺序。将EditText高于它应该在RelativeLayout中隐藏的视图(工具栏),就像这样
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="pl.michalz.hideonscrollexample.PartOneActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignTop="@+id/editTextSearch" />
<EditText
android:id="@+id/editTextSearch"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginTop="55dp"
android:hint="Input text" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"/>
</RelativeLayout>