我正在创建一个Android应用程序,我需要插入一个水平滚动文本视图,在背景中以椭圆形彩色形状突出显示onClick。此外,如果选择了另一个文本视图并且新选择的文本视图突出显示,则应删除背景形状。我认为它像收音机按钮但具有不同的风格。
请参考下图: -
我不知道这些是否滚动TextViews或Buttons。
先谢谢。
答案 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;
祝你好运。
埃姆雷