아래 코드는 왜 실패할까요?버튼을 추가 할 때 내 배경이 사라지는 이유는 무엇입니까?
내 main.xml에 파란색 relativeLayout이 있습니다. 클릭시 녹색 버튼이 추가됩니다.
내 Motorola Xoom에서 실행할 때 화면을 클릭하면 녹색 버튼이 표시되지만 파란색이 검은 색으로 바뀝니다. 다시 클릭하면 파란색 배경이 표시됩니다. 다시 클릭하면 검정색이 보입니다 ...
무엇이 누락 되었습니까?
도움 주셔서 감사합니다.
package com.android.mikeviewtester;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
public class ViewTesterActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set the relative layout as our view
setContentView(R.layout.main);
RelativeLayout currentView = (RelativeLayout) findViewById(R.id.MyRelativeLayout);
// set a listener
currentView.setOnTouchListener((android.view.View.OnTouchListener) mOnTouchListener);
}
private android.view.View.OnTouchListener mOnTouchListener = new android.view.View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (v != null)
v.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_UP) {
android.widget.RelativeLayout vw = (android.widget.RelativeLayout) findViewById(R.id.MyRelativeLayout);
// create and add a new cyan button
Button btn = new Button(ViewTesterActivity.this);
btn.setBackgroundColor(Color.GREEN);
vw.addView(btn, 100, 100);
vw.invalidate();
btn.invalidate();
}
return true;
}
};
}
main.xml에
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/MyRelativeLayout"
android:background="#0000FF">
</RelativeLayout>
당신이 새 단추에 대해 설정 한 viewgroup.layoutparams 함께 할 수있는 뭔가가있을 수도 있습니다, 잘 모르겠어요 , 그것을 함께 피들해야 할 것이다;) tryed 당신이뿐만 아니라 추가 후 무효화? – Warpzit
행운과 함께 layoutparams 설정으로 놀았습니다. addView (btn, 100, 100)를 사용하여 레이아웃 매개 변수를 모두 사용하지 않으려 고 시도했습니다. 나는 invalidate()와 invalidateRect (..)를 시도했다. 뷰에서 getDrawingRect()를 호출하면 전체 캔버스가 올바르게 표시되므로 괜찮습니다. – SkolVikingsGuy