Android的ScrollView(当滚动或弹出时)喜欢设置EditText的焦点,当它是它的一个孩子时.滚动然后释放时会发生这种情况.反正有没有阻止这种行为?我已经尝试了几乎所有我能想到的东西以及我在StackOverflow上读过的所有内容.没有什么对我有用.下面是一个示例布局如果您想测试它.我迫切希望阻止这种愚蠢的行为.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginRight="50dp"
android:focusable="true"
android:focusableInTouchMode="true"
>
<EditText
android:layout_width="fill_parent"
android:layout_height="100dp"
android:text="TestApp 1"
/>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TestApp 1"
/>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TestApp 1"
/>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TestApp 1"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="100dp"
android:text="Bleh...."
/>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TestApp 1"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="100dp"
android:text="TestApp 1"
/>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TestApp 1"
/>
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="MeeEEEEEEEEEEEEE" …Run Code Online (Sandbox Code Playgroud) 如果没有我找到的出色解决方案,这似乎是一个常见问题.目标是停止ScrollView从自动滚动到EditText具有焦点的(或任何视图).
你有一堆视图(Buttons,TextViews等)ScrollView,其中一个是EditText.点击后说出一个按钮ScrollView,ScrollView向下滚动到EditText(关闭屏幕).这是不可取的,因为您不希望其他元素滚动离开屏幕.
现在,我可以通过在屏幕中首先显示其他可聚焦元素来阻止这种情况发生ScrollView.但是,一般问题仍然存在.用户手动向下滚动EditText,输入一些数字,然后向上滚动到顶部(EditText现在关闭屏幕),他们点击一个按钮ScrollView,猜猜是什么?在ScrollView下降到织补滚动EditText.
我正在考虑扩展ScrollView和覆盖那里的一些方法findFocusableViewInBounds,但我有一种感觉,我只会让自己陷入更多麻烦.
如果可以的话请帮忙.
我已经玩了很多东西,例如EditText在我的顶部有一个0高度ScrollView,将Next Focusable元素属性添加到其他项目中ScrollView等等.我想一个"hack"可能会让EditText虚拟或者失去焦点.手动键盘隐藏或东西.
我有一个ViewPager包含同一个片段的几个实例,这个片段包含一篇文章.文章视图层次结构非常简单,标题,横幅图像,副标题和正文; 除标题之外的所有内容都包含在scrollview中.
问题是,当您滑动到新页面时,片段会在顶部显示视图,然后立即滚动到容器的中间.(事实上,它滚动到TextView的开头,ID为:article_content)
我已在问题的底部发布了布局.
现在,ViewPager设置了一个简单的a实现FragmentStatePagerAdapter,这里是代码:
class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
Bundle args;
int count;
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
this.count = 8;
}
@Override
public Fragment getItem(int position) {
ArticleFragment mPrimaryFragment = new ArticleFragment();
args = new Bundle();
args.putString(ArticleFragment.KEY_ARTICLE_URL, mCurArticleLink);
mPrimaryFragment.setArguments(args);
return mPrimaryFragment;
}
@Override
public int getCount() {
return count;
}
}
Run Code Online (Sandbox Code Playgroud)
Fragment本身也很简单.首先,我检查期间onCreate是否有缓存的文章,我打电话给onCreateView
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.apk_article_view, null);
mTitle = (TextView) …Run Code Online (Sandbox Code Playgroud) 我有以下XML布局
<RelativeLayout>
<ScrollView>
</ScrollView>
<LinearLayout>
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
进入LinearLayout我通过代码添加一个admob AdView.ScrollView包含内容并在AdView初始化之前显示它.
问题是,当广告被显示时,ScrollView向下滚动广告的大小(高度).我猜测因为ScrollView设置为height = match_parent和Above = LinearLayout,当广告初始化ScrollView时会调整大小这就是导致滚动的原因(LinearLayout设置为与父底部对齐).
有没有办法绕过它?我希望ScrollView保持与广告在屏幕上显示之前相同的滚动偏移.
使用WebView内部时NestedScrollView有一些问题.我正在争取的主要是那些在向下滚动时加载更多内容的网站效果不佳,例如vimeo.com.同样设置视图LAYER_TYPE_HARDWARE不起作用,可能出于同样的原因,它基本上因高度而崩溃.那么,有没有到一个替代NestedScrollView,如果我想使用CoordinatorLayout,以折叠工具栏时,里面的用户滚动WebView?
我的代码如下.要重现此问题,只需加载vimeo.com并滚动到底部即可.
activity_scrolling.xml
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.webviewnestedscroll.ScrollingActivity"
tools:showIn="@layout/activity_scrolling">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"></WebView>
</android.support.v4.widget.NestedScrollView>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email"
app:layout_anchor="@id/app_bar"
app:layout_anchorGravity="bottom|end"/>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
ScrollingActivity.java
package com.webviewnestedscroll;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebSettings; …Run Code Online (Sandbox Code Playgroud) android webview android-webview android-support-library android-design-library
我目前有一个带有 LinearLayout 的 ScrollView 。我正在动态更改一些内容,例如动态设置长文本段落,并添加动态布局(按钮等)。这会导致线性布局的高度发生变化,从而导致 ScrollView 向下滚动。如何在布局动态更新时保持当前滚动位置?
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical
android:gravity="center_horizontal"
>
<!-- Dynamic Content Here -->
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)