yongjie |
2018-02-08 05:25 |
我昨天调试了一下,找到了Android的Layout Information。特别是ActionBar。
但问题没有解决。
具体是这样的: 利用QTextEdit的focusOutEvent, 利用QtNative::activity, 再找ActionBar。 void PlainTextEdit_Menu::focusOutEvent(QFocusEvent *event) { QPlainTextEdit::focusOutEvent(event); #ifdef Q_OS_ANDROID if (mainWindow) { if (mainWindow) { void androidActionBarHide(); void androidActionBarShow(); qDebug() << "androidActionBarHide() called"; //androidActionBarHide(); androidActionBarShow(); } } #endif }
void androidActionBarHide() { QAndroidJniObject::callStaticObjectMethod("info/suanchou/math/suanchou/Util", "androidActionBarHide", "()V"); }
void androidActionBarShow() { QAndroidJniObject::callStaticObjectMethod("info/suanchou/math/suanchou/Util", "androidActionBarShow", "()V"); }
---------------------------------------
static void androidActionBarHide() { Log.w("Suanchou", "androidActionBarHide"); Activity activity = org.qtproject.qt5.android.QtNative.activity(); ActionBar bar = activity.getActionBar(); Log.w("Suanchou", "Tab count = " + bar.getTabCount()); bar.hide(); //View view = activity.getView(); //view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); Log.w("Suanchou", "androidActionBarHide exit"); //view.performClick(); } static void androidActionBarShow() { Log.w("Suanchou", "androidActionBarShow"); Activity activity = org.qtproject.qt5.android.QtNative.activity(); ActionBar bar = activity.getActionBar(); bar.show(); View view = activity.getCurrentFocus(); if (view == null) { Log.w("Suanchou", "view is null"); return; } Log.w("Suanchou", "view " + view.toString()); ViewParent p = view.getParent(); ViewParent child = p; while (p != null && p.getParent() != null) { Log.w("Suanchou", "viewParent: " + p.toString()); child = p; p = p.getParent(); } Log.w("Suanchou", "out of loop"); Rect rect = new Rect(0, 0, 3000, 500); //p.invalidateChild(child, rect); p.requestLayout(); Log.w("Suanchou", "androidActionBarShow exit"); }
现在的问题是:让Android repaint ActionBar。我对Android也不太熟,代码中是胡乱试试的。 有谁对Android的Layout比较熟悉,解释一下,怎么repaint ? 已有的信息是TabCount是0,这个也比较奇怪。 |
|