我想创建下面的布局,在该布局下,项目将垂直滚动。无论何时我们向上或向下滚动居中(28)文本视图都应放大位置。我发现此链接Gallery like view with center image zoom但是他们根据需要使用图像水平滚动。我只需要使用textview垂直滚动 如果有人知道逻辑,请告诉我.......
答案 0 :(得分:2)
首先,感谢@sanjay kumar提出了一个很好的问题。
2天后,我找到了这个问题的最佳解决方案。
您可以使用RecyclerView
并确保LinearLayoutManager
应该喜欢这个
LinearLayoutManager yourLinearLayout= new LinearLayoutManager(getApplicationContext());
yourLinearLayout.setOrientation(LinearLayoutManager.VERTICAL);
yourLinearLayout.setLayoutManager(yearLayoutManager);
最困难的问题是如何获得recyclerView的中间项目,我想您可以在此链接中了解更多信息: https://github.com/plattysoft/SnappingList
最后,让中间物品比其他物品更大。在RecyclerView的适配器应该是这样的
public class DateAdapter extends RecyclerView.Adapter<DateAdapter.DateViewHolder> {
private ArrayList<LabelerDate> dateDataList;
private static final int VIEW_TYPE_PADDING = 1;
private static final int VIEW_TYPE_ITEM = 2;
private int selectedItem = -1;
public DateAdapter(ArrayList<Datasource> data, int paddingWidthDate) {
this.dateDataList = data;
this.paddingWidthDate = paddingWidthDate;
}
@Override
public DateViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//todo
}
@Override
public void onBindViewHolder(DateViewHolder holder, int position) {
Datasource data = dateDataList.get(position);
if (getItemViewType(position) == VIEW_TYPE_ITEM) {
holder.tvDate.setText(String.valueOf(data.valueDate));
holder.tvDate.setVisibility(View.VISIBLE);
holder.imgSmall.setVisibility(View.VISIBLE);
if (position == selectedItem) {
holder.tvDate.setTextColor(Color.parseColor("#094673"));
holder.tvDate.setTextSize(35);
holder.imgSmall.setBackgroundResource(R.color.textviewbold);
} else {
holder.tvDate.setTextColor(Color.GRAY);
holder.tvDate.setTextSize(35);
holder.imgSmall.setBackgroundResource(R.color.gray);
}
}
}
public void setSelecteditem(int selecteditem) {
this.selectedItem = selecteditem;
notifyDataSetChanged();
}
@Override
public int getItemViewType(int position) {
//todo
}
public class DateViewHolder extends RecyclerView.ViewHolder {
//todo
}}
创建了recyclerView,适配器和数据源。你可以查看onBindViewHolder()
。如果选择了项目,则它会变大并变为黑色。如果未选中,它将变为灰色。我的布局看起来像你的
答案 1 :(得分:0)
使用此库
将TextView放入生活在ZoomView上的LinearLayout。
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.polidea.ZoomView
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/myLinearLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</com.polidea.ZoomView>
</ScrollView>
答案 2 :(得分:0)
Polidea自定义View在我的情况下不起作用。不得不添加一个带AttributeSet
参数的构造函数,因为它引发了xml膨胀错误。另外,我必须使ScrollView
仅包裹TextView
。