【发布时间】:2012-03-07 11:46:55
【问题描述】:
我目前正在做一个项目,我使用打包在 RelativeLayout 中的 webview,并在左下角放置了一个 ImageButton:
<RelativeLayout
android:id="@+id/relativeLayout_maincontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
/>
<ImageButton
android:id="@+id/imageButton_call"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="2dp"
android:src="@android:drawable/ic_menu_call" />
</RelativeLayout>
这很好用。我想的下一步是按钮有时会打扰我的用户,当他们看不到按钮后面的东西时......所以我试图在几秒钟后隐藏按钮并且当用户滚动/触摸时/或其他任何东西(只是一些用户输入)我会显示它,几秒钟后按钮应该再次消失。就像 web 视图中的放大和缩小按钮一样。最好的方法是使用与这些缩放按钮相同的功能,但我找不到这样做的方法。我根据How to show a view for 3 seconds, and then hide it?的知识创建了一个函数:
private void startCallButtonHidingThread() {
Thread thread = new Thread() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
runOnUiThread(new Runnable() {
@Override
public void run() {
callButton.setVisibility(ImageButton.GONE);
}
});
}
};
thread.start();
}
效果很好。下一步是在用户输入发生时显示按钮,所以我尝试了这样的事情:
relativeLayout.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(callButton.getVisibility() == ImageButton.GONE) callButton.setVisibility(ImageButton.VISIBLE);
startCallButtonHidingThread();
return false;
}
});
或者那个:
relativeLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(callButton.getVisibility() == ImageButton.GONE) callButton.setVisibility(ImageButton.VISIBLE);
startCallButtonHidingThread();
}
});
和我在 webview 上尝试过的一样。大多数时候它只工作一次,然后根本没有反应。
所以如果您有任何想法或更好的解决方案,请告诉我。 非常感谢您的帮助!
【问题讨论】:
-
用户输入在哪里?