2013-02-27 154 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; 
} 
} 

和我的活动:

//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(); 
     } 
    }); 
} 

我想在我的mainactivity.xml创建一个按钮,并在我的mainactivity实例。

我缺少一些点在这里,但我不知道它。

因为我的观点是纯粹的动态(没有layout.xml)我不认为我应该使用layout.xml(也许这是我的思维封锁),而是动态地设置按钮属性。

任何提示表示赞赏!

+0

那么问题是什么? – Simon 2013-02-27 19:00:18

+0

我无法实例化一个按钮,也不能添加一个按钮。 我需要一个静态xml来添加一个按钮,我需要在哪里实例化(mainactivity?)。不会静态xml覆盖/销毁动态内容(例如使用setContentView(R.layout.xy)会破坏我的轨道吗?) – Wandang 2013-02-27 19:01:35

+1

您不需要一个静态xml按钮。你可以使用类似于:Button sampleButton = new Button(context); – lokoko 2013-02-27 19:02:29

回答

1

你想扩展ViewGroup而不是一个视图(LinearLayout,RelativeLayout,FrameLayout等) - 它们为你处理子视图。

+0

谢谢。现在我得到了this.addView(按钮)功能。 唯一的问题是该按钮不会出现。 我确实设置了width/heigth 200,200和visibility = true,而且还是frontof()。仍然不可见。要继续尝试 – Wandang 2013-02-27 19:15:57

+0

你延伸了什么?你很可能想要扩展RelativeLayout。在这种情况下,您需要调用setLayoutParams()传递一个RelativeLayout.LayoutParams来指定您希望视图所在的位置。 – 2013-02-27 21:42:39

+0

哦,那是问题所在。我从ViewGroup扩展。要明天解决,谢谢 – Wandang 2013-02-28 22:48:36

0

我想也许你需要刷新整个视图/活动。尝试在onResume方法中做到这一点,也许这有助于。但是,因为您不使用layout.xml,我不确定这是否对您有很大帮助。

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

谢谢你的努力,但我不认为这有帮助。使用您的建议将与从我的活动中删除视图相同。 – Wandang 2013-02-27 19:17:49