【问题标题】:Some devices don't follow 'adjustpan'某些设备不遵循“调整盘”
【发布时间】:2015-01-09 01:55:54
【问题描述】:

我有一个listview。列表的每个项目(行)包含一个用于评论的textView 和一个用于回复评论的editText。正在运行时加载评论。

EditText 在键盘后仍然隐藏。我搜索的解决方案是将adjustpan 包含在manifest 中的特定活动标签中。在为我的 nexus 5 (5.0)、nexus S (4.1.2) 和 HP 触摸板 (4.0.3) 调整该盘之后。感觉很酷。

Samsung S duos(4.0.4) 和 Samsung Galaxy Grand (4.1.2) 的情况有所不同 即使我在清单(单独和一起)中尝试了adjustpanadjustResize,但设备将editText 隐藏在键盘后面。当我在这些设备上触摸editText 时,我注意到了更多的事情。 editText 完美地出现在键盘上方,但当我开始打字时,屏幕会上下跳动,最后 editText 会出现在键盘后面。

我已经试过了:

  • android:descendantFocusability="afterDescendants"editText
  • android:focusable="true"ediTtext
  • adjustpanadjustResize 在清单中
  • stateHiddenstateVisible 不是解决方案,因为我只需要在触摸请求时使用键盘。
  • 在一些文章中,他们建议将视图放入scrollView,但实际上不可能将listview放入scrollView

我花了两天时间寻找解决方案。我认为这个问题是特定于设备的。是这样吗?有没有人遇到过同样的问题?我该如何解决这个问题?

如果如下所示: (DetailViewActivity 是出现问题的活动)

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/appTheme" >
    <meta-data
        android:name="android.app.default_searchable"
        android:value="com.examandroid.activities.SearchActivity" />

    <activity
        android:name=".activities.LearnaptActivity"
        android:label="@string/title_activity_learnapt" />
    <activity
        android:name=".activities.SplashActivity"
        android:label="@string/app_name"
        android:theme="@style/SplashTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".activities.LoginActivity"
        android:label="@string/title_activity_login"
        android:parentActivityName=".activities.SplashActivity"
        android:theme="@style/appTheme" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.examandroid.activities.SplashActivity" />
    </activity>
    <activity
        android:name=".activities.ForgotPasswordActivity"
        android:label="@string/title_activity_forgot_password" />
    <activity
        android:name=".activities.SignupActivity"
        android:configChanges="keyboardHidden|orientation"
        android:label="@string/title_activity_signup"
        android:parentActivityName=".activities.LoginActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.examandroid.activities.LoginActivity" />
    </activity>
    <activity
        android:name=".activities.MainActivity"
        android:label="@string/app_name" />
    <activity
        android:name=".activities.LessonActivity"
        android:label="@string/title_activity_lesson" />
    <activity
        android:name=".activities.SearchActivity"
        android:label="@string/title_activity_search"
        android:parentActivityName=".activities.MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.examandroid.activities.MainActivity" />
    </activity>
    <activity
        android:name=".activities.ProfileEditActivity"
        android:label="@string/title_activity_profile_edit"
        android:parentActivityName=".activities.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.examandroid.activities.MainActivity" />
    </activity>
    <activity
        android:name=".activities.DetailViewActivity"
        android:label="@string/title_activity_item_detail_view"
        android:windowSoftInputMode="adjustPan" >
    </activity>
    <activity
        android:name=".activities.ImageFullView"
        android:label="@string/title_activity_image_full_view" >
    </activity>
</application>

【问题讨论】:

  • 显示你的清单.....
  • 包含有问题的清单。
  • 试试这个.android:configChanges="orientation"
  • 感谢您的回复。但这并不能解决问题。我无法理解为什么这个问题会出现在某些设备上,而不是所有设备上。
  • 你试过android:windowSoftInputMode="stateUnspecified|adjustPan"吗?

标签: android android-layout android-listview keyboard android-softkeyboard


【解决方案1】:

根据这个adjustPan not preventing keyboard from covering EditText,你必须禁用全屏。

试试这个。点击编辑文本。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
ActivitiesCurrentContentView.requestLayout();

参考:

adjustPan not preventing keyboard from covering EditText

android Exit from full screen mode

【讨论】:

  • 我还发现,如果活动是全屏,则平移不会被调整。但我的这个活动不是全屏活动。否则我的 nexus 设备也不应该调整平移。
  • 无论如何我在代码 ActivitiesCurrentContentView.requestLayout() 中找不到什么是 ActivitiesCurrentContentView;
猜你喜欢
  • 2013-02-27
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 2018-02-19
  • 1970-01-01
相关资源
最近更新 更多