Android 无法使工具栏折叠
更新问题。我尝试从strings.xml中的字符串数组设置适配器,然后将适配器设置为recyclerview(而不是从游标加载的适配器),但它仍然不起作用。我在这里再次发布了两个文件(activity\u article\u list.xml-主布局文件和ArticleListActivity.java): 活动文章列表.xml:Android 无法使工具栏折叠,android,android-recyclerview,android-collapsingtoolbarlayout,Android,Android Recyclerview,Android Collapsingtoolbarlayout,更新问题。我尝试从strings.xml中的字符串数组设置适配器,然后将适配器设置为recyclerview(而不是从游标加载的适配器),但它仍然不起作用。我在这里再次发布了两个文件(activity\u article\u list.xml-主布局文件和ArticleListActivity.java): 活动文章列表.xml: <android.support.design.widget.CoordinatorLayout xmlns:android="http://schem
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/my_appbar_container"
android:layout_width="match_parent"
android:layout_height="192dp"
android:background="@color/primary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="@color/primary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:id="@+id/technique_three_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/days_list_3"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
public class ArticleListActivity extends AppCompatActivity {
private Toolbar mToolbar;
private SwipeRefreshLayout mSwipeRefreshLayout;
private RecyclerView mRecyclerView;
private RecyclerView.LayoutManager mLayoutManager;
Toolbar toolbar;
RecyclerView planets_list;
RecyclerView.LayoutManager layout_manager;
RecyclerViewAdapter adapter;
CollapsingToolbarLayout collapsing_container;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_article_list);
toolbar = (Toolbar) findViewById(R.id.technique_three_toolbar);
planets_list = (RecyclerView) findViewById(R.id.days_list_3);
collapsing_container = (CollapsingToolbarLayout) findViewById(R.id.collapsing_container);
layout_manager = new LinearLayoutManager(this);
planets_list.setLayoutManager(layout_manager);
adapter = new RecyclerViewAdapter(getResources().getStringArray(R.array.days_names));
planets_list.setAdapter(adapter);
setSupportActionBar(toolbar);
collapsing_container.setTitle(getString(R.string.app_name));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
String data[];
public RecyclerViewAdapter(String data[]){
this.data = data;
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.day_item, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(RecyclerViewAdapter.ViewHolder holder, int position) {
holder.text_view.setText(data[position]);
}
@Override
public int getItemCount() {
return data.length;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView text_view;
public ViewHolder(View v) {
super(v);
text_view = (TextView) v.findViewById(R.id.planet_name);
}
}
}
RecycleServiceAdapter.java:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/my_appbar_container"
android:layout_width="match_parent"
android:layout_height="192dp"
android:background="@color/primary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentScrim="@color/primary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:id="@+id/technique_three_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/days_list_3"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
public class ArticleListActivity extends AppCompatActivity {
private Toolbar mToolbar;
private SwipeRefreshLayout mSwipeRefreshLayout;
private RecyclerView mRecyclerView;
private RecyclerView.LayoutManager mLayoutManager;
Toolbar toolbar;
RecyclerView planets_list;
RecyclerView.LayoutManager layout_manager;
RecyclerViewAdapter adapter;
CollapsingToolbarLayout collapsing_container;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_article_list);
toolbar = (Toolbar) findViewById(R.id.technique_three_toolbar);
planets_list = (RecyclerView) findViewById(R.id.days_list_3);
collapsing_container = (CollapsingToolbarLayout) findViewById(R.id.collapsing_container);
layout_manager = new LinearLayoutManager(this);
planets_list.setLayoutManager(layout_manager);
adapter = new RecyclerViewAdapter(getResources().getStringArray(R.array.days_names));
planets_list.setAdapter(adapter);
setSupportActionBar(toolbar);
collapsing_container.setTitle(getString(R.string.app_name));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
String data[];
public RecyclerViewAdapter(String data[]){
this.data = data;
}
@Override
public RecyclerViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.day_item, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(RecyclerViewAdapter.ViewHolder holder, int position) {
holder.text_view.setText(data[position]);
}
@Override
public int getItemCount() {
return data.length;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView text_view;
public ViewHolder(View v) {
super(v);
text_view = (TextView) v.findViewById(R.id.planet_name);
}
}
}
公共类RecycleServiceAdapter扩展了RecyclerView.Adapter{
字符串数据[];
公共RecycleServiceAdapter(字符串数据[]){
这个数据=数据;
}
@凌驾
public RecycleServiceAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图v=LayoutInflater.from(parent.getContext())
.充气(R.layout.day_项目,父项,假);
视窗支架vh=新视窗支架(v);
返回vh;
}
@凌驾
BindViewHolder上的公共无效(RecycleServiceAdapter.ViewHolder,int位置){
holder.text_view.setText(数据[位置]);
}
@凌驾
public int getItemCount(){
返回数据长度;
}
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
//在本例中,每个数据项只是一个字符串
公共文本视图文本视图;
公共视图持有者(视图v){
超级(五);
text_view=(TextView)v.findviewbyd(R.id.planet_name);
}
}
}
strings.xml:
<resources>
<string name="app_name">XYZ Reader</string>
<string name="welcome_xyz_reader">Welcome to XYZ Reader!</string>
<!-- Days -->
<string-array name="days_names">
<item>Monday</item>
<item>Tuesday</item>
<item>Wednesday</item>
<item>Thursday</item>
<item>Friday</item>
<item>Saturday</item>
<item>Sunday</item>
</string-array>
</resources>
XYZ阅读器
欢迎来到XYZ阅读器!
星期一
星期二
星期三
星期四
星期五
星期六
星期日
那些已经完成你的应用材料项目,请给我一些提示,如何添加一个功能齐全的折叠工具栏的主要活动
谢谢。您是否已将整个视图包装在协调布局中?。e、 g
<android.support.design.widget.CoordinatorLayout >
<android.support.design.widget.AppBarLayout >
<android.support.design.widget.CollapsingToolbarLayout >
<ImageView />
<android.support.v7.widget.Toolbar />
</android.support.design.widget.CollapsingToolbarLayout>
<android.support.v7.widget.RecyclerView />
</android.support.design.widget.CoordinatorLayout>
我已经移除了参数
此滚动行为仅由CoordinatorLayout控制。任何其他容器都无法做到这一点。请按照以下要求更改AppBarLayout代码…代码中缺少一些行…这对我来说非常适合
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="112dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="?attr/actionBarSize"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed|enterAlways">
<android.support.v7.widget.Toolbar
android:id="@+id/anim_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/index6"
android:fitsSystemWindows="true"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_collapseMode="pin"
app:layout_scrollFlags="scroll|enterAlways">
</android.support.v7.widget.Toolbar>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
使用此链接:是的,我已将其包装在coordinatorlayout中。请查看更新的问题以了解更多信息。您是否按照我的代码进行了操作?因为在代码中没有添加minHeight和layout,所以scrollFlags在CollasingToolbarLayout中也是不同的