この実装で何が問題なのか教えていただけますか?私がここでやりたいのは、画面をタップしたときに場所を入れ替える2つの重なり合うビューがあることだけです。私が間違って使用していない限り、View.bringToFront()は何もしません?Android:2つのオーバーラップビューを交換する
以下は私のアプリのすべてのコードです。 2つが実際に重なっていることを確認するために、 'backView'にパディングを追加しました。実際に私は両方の画面で見ることができました。トップビューをタップすると実際にonClickメソッドがトリガされますが、bringToFrontの呼び出しに応じて視覚的に変化するものはありません。
public class MainActivity extends Activity implements OnClickListener {
private ImageView frontView;
private ImageView backView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
frontView = (ImageView) findViewById(com.example.R.id.FrontView);
backView = (ImageView) findViewById(com.example.R.id.BackView);
frontView.setOnClickListener(this);
backView.setOnClickListener(this);
backView.setPadding(10,0,0,0);
}
private boolean flag;
public void onClick(View v) {
if (!flag) {
backView.bringToFront();
}
else {
frontView.bringToFront();
}
flag = !flag;
}
}
と対応するレイアウト:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/FrontView"
android:src="@drawable/front"
/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/BackView"
android:src="@drawable/back"
/>
</RelativeLayout>
多分それは私が使用しているレイアウトですか?私は確信していません...私はFrameLayoutとLinearLayoutも試みました。
私は、AbsoluteLayoutを使用すると、私に必要な結果が得られているようですが、実際にはそのクラスは廃止予定とマークされています。私は試してみることを躊躇して "何故、なぜそれは非難されていますか?" 「これを行う正当な方法はありますか?」と尋ねるだけです。 – Cruinh