私は2枚の画像がありますのAndroidのImageButtonスワップリソースの葉 '残基'
IMG_1:
IMG_1_PRESSED:
私は、デフォルトでIMG_1を表示するが、クリックすると、画像がIMG_1_PRESSEDに変わります。 be
が正しいドローアブルを含むenum
あるのはここ
は、ボタン自体のコードスニペットです:
ImageButton ib = new ImageButton(this.context);
ib.setImageResource(be.getDrawable());
ib.setScaleType(ImageButton.ScaleType.CENTER_INSIDE);
ib.setBackgroundColor(Color.TRANSPARENT);
ib.setPadding(0, 0, 0, 0);
ib.setAdjustViewBounds(true);
ib.setMaxWidth(width);
ib.setMaxHeight(height);
setStrengthListener(ib, be);
そして、ここではsetStrengthListener
方法である:
private void setStrengthListener(final ImageButton ib, final ButtonEnum be){
ib.setOnTouchListener(new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
ib.setImageResource(be.getDrawablePressed());
return true;
case MotionEvent.ACTION_UP:
ib.setImageResource(be.getDrawable());
return true;
}
return false;
}
});
}
今、両方の画像は480x240であり、 width
とheight
はそれぞれデバイスの幅/ 3とデバイスの幅/ 6に設定されています(3つの画像を表示したいので、/ 3)。ここで
が問題だボタンが押された場合、私はこれを取得:
押されたボタンの下に、この小さなラインがあります...私はこの問題を解決するために多くのことを試みたが、何とかそのました小さな線が今日私の最大の敵になった。余分な努力として
:
ImageButton ib = new ImageButton(this.context);
ib.setImageResource(be.getDrawablePressed());
ib.setScaleType(ImageButton.ScaleType.CENTER_INSIDE);
ib.setBackgroundColor(Color.TRANSPARENT);
ib.setPadding(0, 0, 0, 0);
....etc
しかし、明らかに、私はボタンを押しながら起動する必要はありません:私はIMG_1_PRESSEDに元のリソースを設定した場合、行はもう表示されません。
親愛なるAndroidの専門家、私はここで間違っていますか?
ご回答ありがとうございます。私はImageViewに切り替え、ボタンを使用する意味がありませんでした。しかし問題は依然として残っていましたが、試行錯誤と読書のカップル(7)時間後、私はそれを理解しました。私は解答で解決策を書くつもりです=) –