我有一些视图(名称,电子邮件,密码,注册按钮):
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ViewFlipper
android:id="@+id/viewflipper"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
//Layouts
</ViewFlipper>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
当我关注edittext字段时,键盘出现并覆盖视图上的下部字段.所以当键盘存在时我看不到它们.我想知道如何使视图可滚动,以便我可以看到较低的字段.此外,如何使视图自动滚动以使聚焦的字段可见.
所以,我有ScrollView一个孩子 - 一个LinearLayout有两个孩子:a TextView和a ViewPager.ViewPager包含许多元素的布局,这就是为什么我需要垂直滚动的能力.只有页面ViewPager可以水平滚动(即:我只想在其中水平滑动ViewPager).那一个TextView不能水平滚动,但应该与我一起滚动ViewPager.
简单?没有.
我在StackOverflow中看到了非常类似的问题(这里,这里,这里和这里).所有建议的解决方案都不适合我:(
我看到的是这个 < - 我的甜蜜UI :),但我无法垂直滚动:(
在ViewPager中嵌入ScrollViews不是一个选项 - UI的设计禁止这样做.
也许这是我用编程方式填充视图寻呼机中的每个页面的东西?嗯...
任何建议,将不胜感激.
我的代码:
activity_main.xml中:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white"
android:fillViewport="true" >
<LinearLayout
android:id="@+id/linearLayoutGeneral"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tvText"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:text="Test text" />
<android.support.v4.view.ViewPager
android:id="@+android:id/viewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</android.support.v4.view.ViewPager>
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
ViewPager中的每个页面都有这样的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" …Run Code Online (Sandbox Code Playgroud) android android-fragments android-scrollview android-viewpager
我的xml如下所示
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/form_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/black"
android:orientation="vertical"
android:overScrollMode="ifContentScrolls"
android:scrollbarStyle="insideOverlay"
android:scrollbars="vertical" >
<Spinner
android:id="@+id/formulae"
android:layout_width="200dp"
android:layout_height="60dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"
android:background="@color/LightSkyBlue"
android:dropDownWidth="wrap_content"
android:entries="@array/formulas"
android:gravity="center"
android:paddingLeft="0dp"
android:textAlignment="center" />
<EditText
android:id="@+id/k2_editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/al"
android:layout_alignRight="@+id/al_editText"
android:layout_alignTop="@+id/k2"
android:layout_marginLeft="120dp"
android:ems="10"
android:enabled="true"
android:inputType="numberDecimal"
android:onClick="@drawable/textfield_activated_holo_light"
android:textColor="@color/White"
android:textSize="15sp"
android:visibility="visible"
android:width="100dp" />
<TextView
android:id="@+id/k1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/dr"
android:layout_marginLeft="24dp"
android:layout_marginTop="28dp"
android:text="@string/K1"
android:textColor="@color/white"
android:textSize="25sp" />
<EditText
android:id="@+id/k1_editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/k2"
android:layout_alignLeft="@+id/k2_editText"
android:layout_alignRight="@+id/k2_editText"
android:layout_alignTop="@+id/k1"
android:background="@drawable/edit_text_holo_light"
android:ems="10"
android:enabled="true"
android:inputType="numberDecimal"
android:onClick="@drawable/textfield_activated_holo_light"
android:textColor="@color/White"
android:textSize="15sp"
android:visibility="visible"
android:width="100dp" />
<TextView
android:id="@+id/dr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/formulae" …Run Code Online (Sandbox Code Playgroud) 我想要的是,在设备更改方向时,屏幕中的顶线在纵向时仍然是横向屏幕上的顶行.反之亦然.
由于纵向和横向之间的屏幕宽度可能不同,因此文本的线宽(也就是宽度TextView和宽度ScrollView)会有所不同.因此,在不同的屏幕配置(纵向与横向,大与小)中,换行将有所不同.在不同的情况下,换行符将处于不同的位置.
有三种不太完美的解决方案供您参考.还解释了它们的缺点.
首先,最基本的方法:
请查看:http://eliasbland.wordpress.com/2011/07/28/how-to-save-the-position-of-a-scrollview-when-the-orientation-changes-in-android/
为什么这不是那么完美:
在肖像中,线条被包裹.
Line_1_Word_A Line_1_Word_B Line_1_Word_C
Line_1_Word_D
Line_2_Word_A Line_2_Word_B Line_2_Word_C
Line_2_Word_D
Line_3_Word_A Line_3_Word_B Line_3_Word_C
Line_3_Word_D
Run Code Online (Sandbox Code Playgroud)
在横向中,线条不会被包裹.
Line_1_Word_A Line_1_Word_B Line_1_Word_C Line_1_Word_D
Line_2_Word_A Line_2_Word_B Line_2_Word_C Line_2_Word_D
Line_3_Word_A Line_3_Word_B Line_3_Word_C Line_3_Word_D
Run Code Online (Sandbox Code Playgroud)
想象一下Line_2_Word_A在保存时在Portrait中读取(在屏幕顶部).当更改为横向时,它将显示Line_3_Word_A(在屏幕顶部).(因为顶部有两行偏移的像素.)
然后我想出一个方法,
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
final ScrollView scrollView = (ScrollView) findViewById(R.id.Trial_C_ScrollViewContainer);
outState.putFloatArray(ScrollViewContainerScrollPercentage,
new float[]{
(float) scrollView.getScrollX()/scrollView.getChildAt(0).getWidth(),
(float) scrollView.getScrollY()/scrollView.getChildAt(0).getHeight() });
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) { …Run Code Online (Sandbox Code Playgroud) android textview android-layout android-scrollview android-orientation
我想实现滚动Toolbar技术(隐藏Toolbar使用同级子视图上下滚动时)CoordinatorLayout和AppBarLayout.
我正在使用Crosswalk的XWalkView(它是一个像WebView一样的视图).
使用常规WebView(在a内NestedScrollView)我可以实现想要的效果:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webViewOrig"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
然而,当以XWalkView相同的方式使用时,我无法让它工作.使用以下XML布局后:
<android.support.v4.widget.NestedScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport = "true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<org.xwalk.core.XWalkView
android:id="@+id/webViewCross"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)
视图甚至没有出现.
删除以下行时
app:layout_behavior="@string/appbar_scrolling_view_behavior"
Run Code Online (Sandbox Code Playgroud)
在XWalkView至少显示,但在整个屏幕上,并在工具栏的顶部.
我该怎么做才能让它发挥作用?因为它是一个开源我应该能够使它工作...我怀疑它是子类XWalkView并实现一些接口(NestedScrollingChild?)或通过子类CoordinatorLayout.Behavior或创建自定义行为AppBarLayout.ScrollingViewBehavior.
有任何想法吗?
BTW XWalkView在内部使用 …
android webview android-scrollview crosswalk-runtime android-coordinatorlayout
我有以下布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+navigate/RLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ABABAB"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10dp"
android:textStyle="bold"
android:id="@+id/myid"
android:layout_centerHorizontal="true"
android:src="@drawable/myid"
android:layout_marginTop="15dp" />.
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:orientation="vertical"
android:id="@+id/firstRectangle"
android:background="@drawable/bg"
android:layout_below="@+id/myid" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10dp"
android:textStyle="bold|italic"
android:textColor="#000000"
android:id="@+id/hotelinfos"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:layout_below="@+id/myid"
android:layout_alignLeft="@+id/myid"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10dp"
android:textStyle="bold"
android:textColor="#000000"
android:id="@+id/hotelname"
android:layout_below="@+id/hotelinfos"
android:layout_alignLeft="@+id/hotelinfos"
android:layout_marginTop="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10dp"
android:textColor="#000000"
android:id="@+id/hoteladdress"
android:layout_below="@+id/hotelname"
android:layout_alignLeft="@+id/hotelname"
android:layout_marginTop="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10dp"
android:id="@+id/hotelphone"
android:layout_below="@+id/hoteladdress"
android:layout_alignLeft="@+id/hoteladdress"
android:layout_marginTop="10dp"
android:textColor="#12C"
android:textStyle="bold|italic"
android:onClick="onClick"
android:clickable="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10dp" …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保持与广告在屏幕上显示之前相同的滚动偏移.
我在ScrollView中有一个回收站视图.我想禁用回收器视图滚动,以便它侦听其父布局,一个ScrollView!
正如标题所述,我正在尝试将一个CardView放在ScrollView中,但是CardView高程阴影正在被它的父母关闭...
这是布局XML:
<FrameLayout
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"
tools:context=".TestScrollViewActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="128dp"
android:background="?colorPrimary"
android:gravity="bottom"
android:minHeight="?actionBarSize"/>
<ScrollView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:clipToPadding="false"
android:paddingBottom="40dp"
android:paddingTop="60dp">
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:elevation="4dp"
app:cardBackgroundColor="@android:color/white"
app:cardCornerRadius="0dp">
<LinearLayout
android:layout_width="400dp"
android:layout_height="600dp"
android:orientation="vertical">
</LinearLayout>
</android.support.v7.widget.CardView>
</ScrollView>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
我找到的唯一解决方法是向父ScrollView添加填充或向子CardView添加边距...
有没有选项可以防止这种情况发生而不使用填充/边距?
谢谢.
编辑:
这就是布局在没有在父滚动视图上设置填充的情况下的样子,因为可以看到,左右阴影被切断:

现在,如果将填充添加到父滚动视图侧,则可以正确绘制阴影,如下所示:

所以,我的主要问题是这是实现这一目标的唯一方法吗?或者父视图上有一个标记或配置,可以正确绘制它的子视图?
我有以下内容:
<android.support.v7.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
Run Code Online (Sandbox Code Playgroud)
我添加这个以获得更清晰的UI:
android:paddingEnd="16dp"
android:paddingStart="16dp"
Run Code Online (Sandbox Code Playgroud)
但是,现在滚动条位于填充内部,看起来很时髦.所以我补充说:
android:scrollbarStyle="outsideInset"
Run Code Online (Sandbox Code Playgroud)
滚动条现在位于填充之外,但是,滚动条仍然在填充内部.
如何让覆盖滚动的光线在衬垫上伸展?
编辑:
以下是遇到与上述相同问题的完整布局代码.
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView 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:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
Run Code Online (Sandbox Code Playgroud) android android-layout android-scrollview android-view android-recyclerview