1

我正在使用本教程中的 Fredrik Bornander 的 SandBoxView http://www.codeproject.com/Articles/319401/Simple-Gestures-on-Android
它对图像视图有效,但我想使用多个图像视图。
这是我在 GestureActivity 下的代码,但它仍然只适用于一个图像视图。
谁能帮我解决这个问题?

公共类 GesturesActivity 扩展 Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.d);
    SandboxView s = new SandboxView(this, bitmap);

    Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.a);
    SandboxView s2 = new SandboxView(this, bitmap2);


    RelativeLayout ly=new RelativeLayout(this);
    ly.addView(s);
    ly.addView(s2);
    setContentView(ly);
}
4

1 回答 1

0

问题是该控件没有与任何控件一起布局,LayoutParameters如果是这种情况,它将始终占用所有可用空间,因此您会得到两个SandboxView重叠的 s,这意味着只有最上面的那个会收到触摸事件。

要解决此问题(无需太多麻烦),请更改布局以确保在两个控件之间分配可用空间;

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.d);
  SandboxView s = new SandboxView(this, bitmap);

  Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.a);
  SandboxView s2 = new SandboxView(this, bitmap2);

  LinearLayout l = new LinearLayout(this);
  l.setOrientation(LinearLayout.VERTICAL);

  // Note the weight parameter of 1, making sure they split the space between them
  LayoutParams lp1 = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 1);
  LayoutParams lp2 = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 1);
  l.addView(s, lp1);
  l.addView(s2, lp2);
  setContentView(l);
}

SandboxView如果您将三个构造函数添加到它的基类中,这将更容易做到View,这将允许控件显示在设计器中,并且在那里使用布局更容易(诚然,这是我应该做的首先是我写这篇文章的时候)。

于 2013-09-25T18:42:02.550 回答