【问题标题】:Android- put button on top of viewAndroid-将按钮放在视图顶部
【发布时间】:2013-07-06 22:14:56
【问题描述】:
我正在创建一个用户可以绘制的应用程序,然后更改他们绘制方式的“设置”。在DrawingActivity 类onCreate 中,我将ContentView 设置为我创建的一个类,名为DrawingView,它扩展了View。我想在 DrawingView 上放置一个按钮,但我不知道怎么做。这是 DrawingActivity 类。
public class DrawingActivity extends Activity {
DrawingView dv ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dv = new DrawingView(this);
setContentView(dv);
}
【问题讨论】:
标签:
android
view
android-activity
【解决方案1】:
如果您想在 ActionBar 上放置一个图标而不是按钮,我建议您检查并下载 ActionBarSherlock 库以避免兼容性问题并简化您的工作。
例如,如果您已经下载并安装了 SherlockActionBar,您应该按照以下步骤操作:
-
从 SherlockActivity 而不是 Activity 扩展您的活动:
public class DrawingActivity extends SherlockActivity {...your code}
将“ic_action_trash”替换为 res/drawable 目录(drawable-hdpi、drawable-ldpi、...)上的图标
- 在 res/menu 文件夹中创建一个 xml 文件,名为 menu_main.xml(例如)
-
在 DrawingActivity 类中覆盖 OnCreate 方法下方的 onCreateOptionsMenu 和 onOptionsItemSelected 方法,如下所示:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_main, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.delete_events)
deleteEvent();
return true;
}
结果如下:
但是,为了检查您的要求,我认为您应该像这样更改上述方法:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//inflater.inflate(R.menu.menu_main, menu);
SubMenu submenu = menu.addSubMenu("");
submenu.setIcon(R.drawable.abs__ic_menu_moreoverflow_normal_holo_dark);
submenu.add(1, 1, 1, R.string.add);
submenu.add(1, 2, 2, R.string.delete);
submenu.add(1, 3, 3, R.string.about);
submenu.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
public boolean onOptionsItemSelected(MenuItem item) {
开关(item.getItemId()){
情况1:
添加事件();
休息;
案例2:
删除事件();
休息;
案例3:
关于();
休息;
默认:
返回真;
}
返回真;
}
当您单击顶部图标时,您会看到:
希望这对你有用!
【解决方案2】:
RelativeLayout 允许将视图置于彼此之上。您可以使用android:layout_width="match_parent" 和android:layout_height="match_parent" 将DrawingView 添加到布局中,然后添加具有适当定位属性的按钮。这是实现您想要的一种方式,我相信还有其他方式。