In your case definitely you can use ViewPager
, but if i were you i would go for RecyclerView
with a LinearLayoutManager
with its orientation set to Horizontal
, so you will not need an HorizontalScrollView
, and using RecyclerView
you will also get the adapter
thing you are looking for..
Now in order to scale
or show some other effect on click
to differentiate it from others, you can Animate
that particular view,
I have written some demo code for that , posting here the required files , let me know if this is what you want,
Activity
/**
* Created by Satyen on 10/27/15.
**/
public class SlidingDrawerActivity extends Activity {
RecyclerView rcyList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_scroll_list);
rcyList = (RecyclerView) findViewById(R.id.rcyList);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
rcyList.setLayoutManager(layoutManager);
/* rcyList.addItemDecoration(
new DividerItemDecoration(this, null));*/
MyRecyclerViewAdapter myRecyclerAdapter = new MyRecyclerViewAdapter(this);
rcyList.setAdapter(myRecyclerAdapter);
}
}
Activity Layout
<!-- layout_scroll_list.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="1">
<android.support.v7.widget.RecyclerView
android:id="@+id/rcyList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@android:color/holo_blue_dark"
android:paddingLeft="8dp"
android:paddingRight="8dp" />
</FrameLayout>
</LinearLayout>
Adapter
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.CustomViewHolder> {
private Context mContext;
View animatedView = null;
public MyRecyclerViewAdapter(Context context) {
this.mContext = context;
}
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, final int i) {
final View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_row, null);
CustomViewHolder viewHolder = new CustomViewHolder(view);
/*final Animation a = AnimationUtils.loadAnimation(mContext, R.anim.scale_up);*/
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// You can tweak with the effects here
if (animatedView == null) {
animatedView = view;
} else {
animatedView.setAnimation(null);
animatedView = view;
}
ScaleAnimation fade_in = new ScaleAnimation(1f, 1.3f, 1f, 1.3f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
fade_in.setDuration(100); // animation duration in milliseconds
fade_in.setFillAfter(true); // If fillAfter is true, the transformation that this animation performed will persist when it is finished.
view.startAnimation(fade_in);
}
});
return viewHolder;
}
@Override
public void onBindViewHolder(CustomViewHolder customViewHolder, int i) {
//Setting text view title
customViewHolder.textView.setText("Data No. " + i);
}
@Override
public int getItemCount() {
return 10;
}
public class CustomViewHolder extends RecyclerView.ViewHolder {
protected ImageView imageView;
protected TextView textView;
public CustomViewHolder(View view) {
super(view);
this.imageView = (ImageView) view.findViewById(R.id.thumbnail);
this.textView = (TextView) view.findViewById(R.id.title);
}
}
}
Adapter Row Layout
<!-- list_row.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="vertical">
<RelativeLayout
android:layout_width="80dp"
android:layout_height="match_parent">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="100dp"
android:layout_height="80dp"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/thumbnail"
android:layout_centerHorizontal="true"
android:text="dafdafda"
android:textColor="#222"
android:textSize="12sp" />
</RelativeLayout>
</LinearLayout>
Other than you can also use TwoWayView
that gives the functionality of implementing HorizontalListView
,
Above is just some demo code which may require some tweaks, let me know if this helps or ask further ...
Also adding the screenshots of the output ..