我注意到许多类似的答案,但不幸的是我在使用它们时遇到了麻烦。我是一些不同的图像视图按钮:
ImageView filterWorld = (ImageView) kati.findViewById(R.id.filter_world);
filterWorld.setOnClickListener(new ViewListeners(this.getContext()).new OneFragmentFilters(OneFragment.this) ) ;
ImageView filterSports = (ImageView) kati.findViewById(R.id.filter_sports);
filterSports.setOnClickListener(new ViewListeners(this.getContext()).new OneFragmentFilters(OneFragment.this) ) ;
ImageView filterEconomy = (ImageView) kati.findViewById(R.id.filter_economy);
filterEconomy.setOnClickListener(new ViewListeners(this.getContext()).new OneFragmentFilters(OneFragment.this) ) ;
他们每个人都使用 xml选择器作为资源,例如:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/world_active" android:state_selected="true">
</item>
<item android:drawable="@drawable/world_active" android:state_focused="true">
</item>
<item android:drawable="@drawable/world_active" android:state_pressed="true">
</item>
<item android:drawable="@drawable/filter_white_world">
</item>
布局xml:
<ImageButton
android:id="@+id/filter_world"
android:layout_width="0dp"
android:layout_height="40dp"
android:scaleType="fitCenter"
android:layout_weight="1"
android:background="@drawable/world"
android:paddingTop="4dp"
android:paddingBottom="4dp"
/>
但问题是,每个按钮仅在单击时保持“活动”状态,而不是在显示特定内容时。此外,我希望每个按钮在单击另一个按钮时返回其默认状态。 提前谢谢!
修改 在你的帮助下,我设法在每次点击时更改按钮,但现在内容不会改变。 onclick听众似乎有一个colfict。这是我的代码:
final ImageView filterWorld = (ImageView) kati.findViewById(R.id.filter_world);
filterWorld.setOnClickListener(new ViewListeners(this.getContext()).new OneFragmentFilters(OneFragment.this) ) ;
final ImageView filterSports = (ImageView) kati.findViewById(R.id.filter_sports);
filterSports.setOnClickListener(new ViewListeners(this.getContext()).new OneFragmentFilters(OneFragment.this) ) ;
filterWorld.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
filterWorld.setImageResource(R.drawable.world_active);
filterSports.setImageResource(R.drawable.filter_white_sports); }
});
filterSports.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
filterWorld.setImageResource(R.drawable.filter_white_world);
filterSports.setImageResource(R.drawable.sports_active); }
});
答案 0 :(得分:0)
您可以在不使用选择器的情况下执行此操作.. 只需在每个imageview上实现点击列表器。
并更改所有imageview上的背景资源。
filterWorld.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
filterWorld.setImageResource(R.drawable.world_active);
filterSport.setImageResource(R.drawable.filter_white_world);
filterEconomy.setImageResource(R.drawable.filter_white_world);
}
});
filterSport.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
filterSport.setImageResource(R.drawable.world_active);
filterWorld.setImageResource(R.drawable.filter_white_world);
filterEconomy.setImageResource(R.drawable.filter_white_world);
}
});
filterEconomy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
filterEconomy.setImageResource(R.drawable.world_active);
filterSport.setImageResource(R.drawable.filter_white_world);
filterWorld.setImageResource(R.drawable.filter_white_world);
}
});
答案 1 :(得分:0)
当您按下按钮时,它将进入活动状态,并且您必须在按下另一个按钮时将其设置为默认状态。 因此,使用此
设置当前按钮以外的其他按钮为默认状态 ImageView filterWorld = (ImageView) kati.findViewById(R.id.filter_world);
filterWorld.setOnClickListener(new ViewListeners(this.getContext()).new OneFragmentFilters(OneFragment.this)
filterSports.setSelected(false);
filterSports.setPressed(false);
filterEconomy.setSelected(false);
filterEconomy.setPressed(false);
) ;