【发布时间】:2013-10-08 22:16:45
【问题描述】:
您好,我正在尝试添加一个显示 4 个图像的活动(想象一个正方形切割成四分之一),其中每个图像在单击时显示不同的图像,我尝试了一些使用图像按钮的布局但无济于事,然后在这里阅读我的答案是使用图像寻呼机的网格视图,但是在实现此功能时,我得到的小图像在网格视图中相距很远,请问有更好的方法吗?
【问题讨论】:
标签: android image button layout
您好,我正在尝试添加一个显示 4 个图像的活动(想象一个正方形切割成四分之一),其中每个图像在单击时显示不同的图像,我尝试了一些使用图像按钮的布局但无济于事,然后在这里阅读我的答案是使用图像寻呼机的网格视图,但是在实现此功能时,我得到的小图像在网格视图中相距很远,请问有更好的方法吗?
【问题讨论】:
标签: android image button layout
如果始终是 2x2 图像,您可以简单地使用垂直线性布局和两个水平布局,然后将图像作为 ImageButton 或 ImageView 放在水平布局内...
如果需要动态网格布局可能是个好主意...
但是,如果您需要更详细的答案,则需要提供有关问题所在的更详细信息...
(编辑:我的意思是gridview,gridlayout仅从api级别14开始可用)
【讨论】:
您可以使用RelativeLayout 来添加您的ImageButtons 并将所有控制权交给您的手来控制按钮的位置、大小等。
另一种观点,是将你的屏幕分成4个矩形(Rects)。 像这样的东西:
Rect upLeftRect = new Rect(0,0,screenWidth/2 , screenHeight/2);
Rect upRightRect = new Rect(screenWidth/2,0,screenWidth,screenHeight/2);
Rect downLeftRect = new Rect(0,screenHeight/2, screenWidth/2 , screenHeight);
Rect downRightRect = new Rect(screenWidth/2, screenHeight/2, screenWidth,screenHeight);
在你的 relativeLayout 上附加一个 onTouchListener,在你的构造函数中是这样的:
yourRelativeLayout.setOnTouchListener(this);
最后,在 onTouch 方法中你会得到这样的东西:
@Override
public boolean onTouch(View v, MotionEvent e){
if(upLeftRect.contains( ( int ) e.getX(), (int) e.getY){
// do whatever you want, i guess that you want some alpha animation or something like this
}else if(upRightRect.contains( (int) e.getX(), (int) e.getY(){
// bla bla.. :)
} // do the rest conditions your self!!
希望有所帮助!
【讨论】: