これが2つのスクリーンショットです。左側はエミュレーターから、右側はデバイスからのものであるため、同じサイズではありません。デバイスから両方を取得する必要があります。申し訳ありません。
どちらも同じドローアブルを使用しています。
左:レイアウトに設定された背景:
<ImageButton
android:id="@+id/backFromOldCurves"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/backunpressed"
android:paddingLeft="10sp"
android:paddingRight="10sp"
android:src="@drawable/navigationpreviousitem" />
右:ACTION_UPのonTouchで動的に設定された背景:
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.setBackgroundDrawable(getResources().getDrawable(R.drawable.backpressed));
}
if (event.getAction() == MotionEvent.ACTION_UP) {
v.setBackgroundDrawable(getResources().getDrawable(R.drawable.backunpressed));
onClick(v);
}
return true;
}
setBackgroundDrawableでDrawableをNinePatchDrawableにキャストしても機能しません。どうすればこれを回避できますか?