現在、私はRelativeLayoutでパックされたwebviewを使用してプロジェクトを作成していますが、左下にImageButtonを配置しました:ユーザーの入力に応じてWebビューの前にビューを非表示にする方法
<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>
これはうまくいきます。私が考えていた次のステップは、ボタンの後ろにあるものを見ることができないときにボタンがユーザーを邪魔することがあるということです。そのため、数秒後にボタンを隠そうとしましたが、ユーザーがスクロール/タッチしています/または何でも(ちょっとしたユーザーの入力)私はそれを表示し、数秒後にボタンが再び消えるはずです。ウェブビューのズームインボタンやズームアウトボタンのように。最も良い方法は、これらのズームボタンと同じ機能を使用することですが、私はこれを行う方法を見つけることができませんでした。私は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の上で試してみました同じことを。たいていの場合、それはたった1回しか動作せず、その後は全く反応がありません。
あなたは何か良いアイデアがあれば教えてください。 本当にありがとうございます!
ユーザの入力ハンドラを使用してみてください? –