我有3个用于国家,时区和语言的微调器,各自的标签以下面的方式一个接一个地排列
Label1 Spinner1
Label2 Spinner2
Label3 Spinner3
当点击说Spinner1
时,我希望整行,即标签和微调器更改其背景颜色,例如,如果将其放入LinearLayout中,那么在微调器上单击,背景应更改为蓝色
我可能想要一种XML方式来更改整个布局的背景,而不是编程方式,因为我必须为每个微调器进行编码
有人可以告诉我如何通过单击微调器来更改整个布局颜色
我尝试了Spinner.setOnItemSelectedListener
,但这仅在我选择某些项目时才起作用,但是我希望即使在按Spinner
的情况下布局也可以更改颜色
布局中的微调框 layout.xml
<LinearLayout
android:id="@+id/linearlay"
android:layout_width="320dp"
android:layout_height="40dp"
android:background="@drawable/bg_spinner_pressed">
<TextView
android:id="@+id/label"
android:layout_height="40dp"
android:layout_marginLeft="15dp"
android:gravity="center_vertical"
android:text="Label"
android:textColor="@color/textColorPrimary"
android:textSize="14dp" />
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:popupBackground="@color/colorPrimary"
android:textColor="@android:color/white"
android:textSize="20sp"/>
</LinearLayout>
Settings.java文件
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.e("Techie","----------------------------citizenship1----------------------------");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Log.e("Techie","----------------------------citizenship2----------------------------");
}
});
我希望ID为linearlay的布局应将其原色更改为白色,以便在单击微调器时更改为蓝色。请帮助
答案 0 :(得分:0)
如果要在单击任何微调器时更改颜色,可以执行此操作-
spinner.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
//HERE YOU CAN CHANGE COLOR OR BG COLOR as per your need
textView.isEnabled = true
linearlay.setBackgroundColor(ContextCompat.getColor(linearlay.context, R.color.tealish))
return false;
}
});
答案 1 :(得分:0)
调用setonTouchListener并处理向下和向上事件以更改颜色
spinner.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.e("Techie", "----------------------------Action down----------------------------");
layout.setBackgroundColor(ContextCompat.getColor(mContext, R.color.color1));
break;
case MotionEvent.ACTION_CANCEL:
Log.e("Techie", "----------------------------Cancel----------------------------");
layout.setBackgroundColor(ContextCompat.getColor(mContext, R.color.color2));
break;
}
// allow target view to handle click
return false;
}
});