2013-02-27 4 views
0

나는 이것 이상으로 갈 것입니다.보기에 단추 추가

내가 어떤 작업 솔루션을 찾을 수 없습니다

는 (유래에서 몇 가지 시도)

시나리오 (이 아직 어떤 실제 스크린 샷입니다) :

enter image description here

내가 가지고있는 활동을 그의 속성으로보기.

이보기는 View.addView (myView)를 통해 다른보기를 추가합니다.

지금 MYVIEW에 버튼을 추가 할 (구체적으로 : MotionEvent.ACTION_UP는 버튼 (오른쪽 아래 모서리에 나타납니다이) 트랙을 운전하는 로봇을 시작합니다 후) 여기

가있다 내 코드의 바로 가기 :

public class ModeRouting extends View { 
public ModeRouting(Context context) { 
    super(context); 
Button asuroStartButton = new Button(context) //does not work 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    int actionevent = event.getAction(); 
    if (actionevent == MotionEvent.ACTION_UP 
      || actionevent == MotionEvent.ACTION_CANCEL) { 
asuroStartButton.visible=true; 
view.add(asuroStartButton); 
    } 
    return true; 
} 
} 

내 활동 : 내 mainactivity.xml에서 버튼을 만들고 내 mainactivity에서 인스턴스화하려고

//in constructor 
contentView = (FrameLayout) findViewById(R.id.content); 
onClickListenerFacade(routingMode, route); 

//this removes all views from stack and places the new one on the view 
private void onClickListenerFacade(View v, final View target) { 
    v.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      contentView.removeAllViews(); 
      contentView.setBackgroundColor(0xff000000); 
      contentView.addView(target); 
      modeSelectorAnimation(); 
     } 
    }); 
} 

.

여기에 몇 가지 사항이 누락되었지만 확실하지 않습니다.

내보기가 순수하게 동적 인 (layout.xml이 없음) 나는 layout.xml을 사용해야한다고 생각하지는 않지만 대신 단추 속성을 동적으로 설정해야한다고 생각합니다.

힌트를 보내 주시면 감사하겠습니다.

+0

그럼 뭐가 문제입니까? – Simon

+0

단추를 인스턴스화 할 수도없고 추가 할 수도 없습니다. 버튼을 추가하려면 정적 xml이 필요하고 어디에 인스턴스화해야합니까 (mainactivity?). (예 : setContentView (R.layout.xy)를 사용하면 내 트랙이 파괴됩니까?) – Wandang

+1

버튼에 정적 xml이 필요하지 않습니다. 다음과 같은 것을 사용할 수 있습니다 : Button sampleButton = new Button (context); – lokoko

답변

1

View (LinearLayout, RelativeLayout, FrameLayout 등)가 아닌 ViewGroup을 확장하려는 경우 - 하위보기가 자동으로 처리됩니다.

+0

감사합니다. 이제 this.addView (버튼) 기능을 사용할 수 있습니다. 유일한 문제는 단추가 나타나지 않는다는 것입니다. width/heigth 200,200 및 visibility = true를 설정하고 더 나아가 bringtofront()를 설정했습니다. 여전히 보이지 않습니다. 계속 노력할거야 – Wandang

+0

당신은 무엇을 연장 했습니까? 대부분 RelativeLayout을 확장하려고합니다. 어떤 경우에는 뷰를 유지할 위치를 지정하는 RelativeLayout.LayoutParams를 전달하여 setLayoutParams()를 호출해야합니다. –

+0

아, 그게 문제 야. 나는 ViewGroup에서 확장했다. 내일 고칠거야, 고맙다. – Wandang

0

아마도 전체보기/활동을 새로 고침해야한다고 생각합니다. onResume 메서드에서이 작업을 시도해보십시오. 아마도 도움이됩니다. 그러나 layout.xml을 사용하지 않으므로 이것이 당신에게 많은 도움이되는지 확실하지 않습니다.

@Override 
protected void onResume(){ 
super.onResume(); 
setContentView(R.layout.activity_main); 
} 
+0

노력에 감사하지만 이것이 도움이되었다고 생각하지 않는다. 귀하의 제안을 사용하는 것은 내 활동에서보기를 제거하는 것과 동일합니다. – Wandang