android7.1 Settings drawerlayout焦点问题

来源:互联网 发布:苹果软件不可用 编辑:程序博客网 时间:2024/06/09 13:12

做系统平台开发,为电视盒子适配android7.1系统,发现设置里面的侧滑栏不能用遥控器器操作,究其原因是该控件没有或得到焦点。

尝试很多获得焦点的方法都不管用,最后采用折中的办法,给ui线程发时延时消息来获取焦点。

--- a/frameworks/base/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java+++ b/frameworks/base/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java@@ -55,6 +55,9 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import android.os.Handler;+import android.os.Message;+ public class SettingsDrawerActivity extends Activity {      protected static final boolean DEBUG_TIMING = false;@@ -78,6 +81,14 @@ public class SettingsDrawerActivity extends Activity {     private DrawerLayout mDrawerLayout;     private boolean mShowingMenu;     private UserManager mUserManager;+       +       private ListView lv;+       +       private Handler mHandler = new Handler(){+               public void handleMessage(Message msg) {+                       lv.requestFocus();+        }+       };      @Override     protected void onCreate(@Nullable Bundle savedInstanceState) {@@ -115,6 +126,7 @@ public class SettingsDrawerActivity extends Activity {                 onTileClicked(mDrawerAdapter.getTile(position));             }         });+               lv = listView;          mUserManager = UserManager.get(this);         if (DEBUG_TIMING) Log.d(TAG, "onCreate took " + (System.currentTimeMillis() - startTime)@@ -126,6 +138,7 @@ public class SettingsDrawerActivity extends Activity {         if (mShowingMenu && mDrawerLayout != null && item.getItemId() == android.R.id.home                 && mDrawerAdapter.getCount() != 0) {             openDrawer();+                       mHandler.sendEmptyMessageDelayed(1, 200);             return true;         }         return super.onOptionsItemSelected(item);


原创粉丝点击