如何创建水平滚动按钮/ TextViews,在单击时在背景中以椭圆形突出显示

时间:2017-05-16 06:46:09

标签: android css xml

我正在创建一个Android应用程序,我需要插入一个水平滚动文本视图,在背景中以椭圆形彩色形状突出显示onClick。此外,如果选择了另一个文本视图并且新选择的文本视图突出显示,则应删除背景形状。我认为它像收音机按钮但具有不同的风格。

请参考下图: -

click here for the image link

我不知道这些是否滚动TextViews或Buttons。

先谢谢。

1 个答案:

答案 0 :(得分:0)

public final class SelectionRecyclerAdapter extends RecyclerView.Adapter<SelectionRecyclerAdapter.ViewHolder> {


private int mSelectedPosition = -1;
private ArrayList<String> mList;
private OnSelectionListener mListener;

public FilterRecyclerAdapter(ArrayList<String> list, OnFilterClickListener callback) {
    mList = list;
    mListener = callback;
}

@Override
public FilterRecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_textview, parent, false);

    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    holder.mTextView.setText(mList.get(position))

    if(position == mSelectedPosition){
      holder.mTextView.setBackgroundColor(Color.RED);
    }else{
      holder.mTextview.setBackgroundColor(Color.TRANSPARENT);
    }

    // You can use selector drawable resource and call holder.mTextView.setSelected(true or false);
}

@Override
public int getItemCount() {
    return mList.size();
}


class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {


    private TextView mTextView;

    ViewHolder(View itemView) {
        super(itemView);

        mTextView = (TextView) itemView;
    }

    @Override
    public void onClick(View view) {
        if (mListener == null) {
            return;
        }

        int position = getAdapterPosition();
        if (mSelectedPosition == position) {
            return;
        }

        mSelectedPosition = position;

        YourModel item = mList.get(position);
        mListener.onSelect(getAdapterPosition(), item);

        notifyDataSetChanged();
    }
}

public void getSelecetedPosition(){
  return mSelected;
}

public boolean hasSelection(){
   return mSelectedPosition != -1;
}

public interface OnSelectionListener {
    void onSelect(int position, YourModel model);
}
}

这就是你的适配器的样子。

您可以在网上找到有关horizantal recyclerview滚动的示例。您可以将LinearSnapHelper附加到recyclerview以获得更好的用户体验。

夸张的布局:

<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:gravity="center"/>

如果要使用View.setSelected(value),则需要创建自己的选择器drawable,其中selectedState = true且其中没有状态定义的项。否则,你可以基本上将你的形状设置为背景而不是Color.RED;

祝你好运。

埃姆雷