我想过将img作为imageview ...... 但是当我这样做时它会在屏幕上显得很紧张(即使参数在整个屏幕上)
帮助?
答案 0 :(得分:8)
验证:
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
然后尝试使用onTouchListener
然后尝试:
yourActivityLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// action to do
return true;//always return true to consume event
}
});
答案 1 :(得分:1)
如果您想触摸布局,请将侦听器设置为自己的布局
答案 2 :(得分:0)
让您的Activity或Fragment实现OnClickListener,然后将其作为点击侦听器分配给每个视图和/或布局。
在函数的第一行只运行一些逻辑,
@override
public void onClick(view v)
{
if(isMusicPlaying)
stopMusic();
// here run the rest of your logic
if (v == someButton){}
}
答案 3 :(得分:0)
以这种方式将触摸事件放在整个活动
上public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
// do your work here
return true;
} else {
return false;
}
}
}
答案 4 :(得分:0)
您可以使用WindowManager并将布局覆盖其他所有内容(也可以覆盖状态栏和其他系统UI)
WindowManager实例具有addVieW()方法。使用正确的布局参数,它会产生描述的结果
答案 5 :(得分:0)
尝试此操作,将最顶层的父级作为此方法的参数传递
例如:stopMusicOnTouch(yourParentView);
public void stopMusicOnTouch(View view) {
//Set up touch listener for non-text box views to hide keyboard.
if(!(view instanceof ImageView)) {
view.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// Stop music here
return false;
}
});
}
//If a layout container, iterate over children and seed recursion.
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
View innerView = ((ViewGroup) view).getChildAt(i);
stopMusicOnTouch(innerView);
}
}
}
答案 6 :(得分:0)
最后,我为整个屏幕制作了一个按钮,并将其设为透明(但可见)
它完美无缺,我建议其他人使用!