当滚动垂直时,如何在android中放大/缩小Vertical ScrollView的项目(仅textview)

时间:2015-08-03 14:07:34

标签: android android-layout android-fragments android-activity

我想创建下面的布局,在该布局下,项目将垂直滚动。无论何时我们向上或向下滚动居中(28)文本视图都应放大位置。我发现此链接Gallery like view with center image zoom但是他们根据需要使用图像水平滚动。我只需要使用textview垂直滚动 如果有人知道逻辑,请告诉我.......

enter image description here

3 个答案:

答案 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()。如果选择了项目,则它会变大并变为黑色。如果未选中,它将变为灰色。我的布局看起来像你的 This is 3 RecyclerViews

答案 1 :(得分:0)

使用此库

Polidea view library

将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

相关问题