当我选择项目时,我正在尝试更改NavigationDrawer中的textColor。我使用RecyclerView作为我的滑动布局。这基于教程:http://www.android4devs.com/2014/12/how-to-make-material-design-navigation-drawer.html。 这就是我想要做的: 这是主要布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.DrawerLayout
android:id="@+id/DrawerLayout"
android:elevation="7sp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.v7.widget.RecyclerView
android:id="@+id/RecyclerView"
android:layout_width="320dp"
android:background="#ffffff"
android:layout_height="match_parent"
android:layout_gravity="right"
android:scrollbars="vertical">
</android.support.v7.widget.RecyclerView>
</android.support.v4.widget.DrawerLayout>
</RelativeLayout>
和list_item:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rowIcon"
android:paddingStart="16dp"
android:src="@drawable/ic_launcher"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="12dp"
android:background="?android:attr/selectableItemBackground"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/rowText" />
</LinearLayout>
如何在选择颜色时告诉他更改颜色?
答案 0 :(得分:1)
首先,您需要添加一个变量来记住所选位置。 然后在项列表中添加单击侦听器。 单击项目列表时,检查位置是否与先前选择的位置相同,如果没有,则更改其样式并重置上一个所选项目的样式。
从您使用的教程中,您可以在方法 onCreateViewHolder
中设置监听器View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_row,parent,false);
ViewHolder vhItem = new ViewHolder(v,viewType);
TextView textView = (TextView) vhItem.findViewById(R.id.rowText);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//change style here
}
}););
答案 1 :(得分:0)
您需要覆盖从RecyclerView.Adapter&lt;&gt;扩展的适配器类中的onClick方法在onBindViewHolder方法中,如下面的代码,并根据所选项目位置应用你的逻辑来改变颜色
public void onBindViewHolder(final Quizviewholder holder, int position) {
holder.quizname.setText(quizList.get(position).name);
holder.desc.setText(quizList.get(position).desc);
holder.time.setText(quizList.get(position).quttime);
holder.noofque.setText(quizList.get(position).qutonsno);
holder.setClickListener(new ItemClickListener() {
@Override
public void onClick(View view, int position, boolean isLongClick) {
if (isLongClick) {
Toast.makeText(mContext, "Rj0078" + position + " - " + mList[position] + " (Long click)", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(mContext, "Rj0078" + position + " - " + holder.time.getText(), Toast.LENGTH_SHORT).show();
}
}
});
}