StackView控件是AdapterViewAnimator的子列,以堆叠的方式显示多个列表项
- 在布局文件中加入加入一个StackView控件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="top.hellowoodes.stackview.MainActivity">
<StackView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:loopViews="true"
android:id="@+id/stackView" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="上一个"
android:id="@+id/button"
android:onClick="prev"
android:layout_gravity="center_vertical" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下一个"
android:onClick="next"
android:id="@+id/button2"
android:layout_gravity="bottom" />
</LinearLayout>
</LinearLayout>
- 在代码中为StackView适配Adapter
public class MainActivity extends AppCompatActivity {
StackView stackView;
int[] imageIds = new int[]{
R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e,R.drawable.f
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
stackView = (StackView) findViewById(R.id.stackView);
List<Map<String, Object>> listItems = new ArrayList<>();
for (int i = 0; i < imageIds.length; i++) {
Map<String, Object> listItem = new HashMap<String, Object>();
listItem.put("iamge", imageIds[i]);
listItems.add(listItem);
}
SimpleAdapter simpleAdapter = new SimpleAdapter(this,
listItems,
R.layout.cell,
new String[]{"iamge"},
new int[]{R.id.image1});
stackView.setAdapter(simpleAdapter);
}
public void prev(View view) {
stackView.showPrevious();
}
public void next(View view) {
stackView.showNext();
}
}
- R.layout.cell布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/image1"
android:layout_gravity="center" />
</LinearLayout>