我在NestedScrollView中有以下结构时遇到问题。
这是我的xml文件:
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/app_base_color"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/nested_view_editprofile"
android:focusable="true"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/app_base_color"
android:weightSum="3">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<TextView
android:id="@+id/txtvEditProfileUserName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="center"
android:paddingBottom="10dp"
android:paddingLeft="3dp"
android:paddingTop="10dp"
android:textColor="@color/orange" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="0.85"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingTop="10dp"
android:weightSum="2">
<TextView
android:id="@+id/txvEditProfileEntertainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.3"
android:gravity="right"
android:text="0"
android:textColor="@color/orange" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:paddingLeft="3dp"
android:singleLine="true"
android:text="Entertainers"
android:textColor="@color/cement_grey" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="10dp"
android:paddingTop="5dp"
android:weightSum="2">
<TextView
android:id="@+id/txvEditProfileSpectator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.3"
android:gravity="right"
android:text="0"
android:textColor="@color/orange" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:paddingLeft="3dp"
android:singleLine="true"
android:text="Spectators"
android:textColor="@color/cement_grey" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.15"
android:gravity="center"
android:orientation="vertical">
<ImageButton
android:id="@+id/imgbtnEditProfileSpactate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:paddingBottom="5dp"
android:paddingTop="10dp"
android:src="@drawable/plus" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:gravity="center"
android:paddingBottom="10dp"
android:paddingLeft="3dp"
android:text="SPACTATE"
android:textColor="@color/orange" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/txtvcom" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/app_base_color"
android:padding="10dp"
android:textColor="@color/cement_grey" />
<TextView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="Personal Information"
android:textColor="@color/orange"
android:background="@drawable/app_base_background"/>
<com.customview.CustomEditext
android:id="@+id/edtxEdtPrflName"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:hint="Name"
android:textColor="@color/cement_grey"
android:inputType="textImeMultiLine"
android:drawableLeft="@drawable/name"
android:drawablePadding="10dp"
android:background="@drawable/profile_pallets_boxes_background"
android:enabled="true"
android:focusableInTouchMode="true"
/>
<com.customview.CustomEditext
android:id="@+id/edtxEdtPrflUserName"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:hint="Username"
android:textColor="@color/cement_grey"
android:inputType="textImeMultiLine"
android:drawableLeft="@drawable/username"
android:drawablePadding="10dp"
android:background="@drawable/profile_pallets_boxes_background"
android:enabled="false"
android:focusableInTouchMode="true"
/>
<com.customview.CustomEditext
android:id="@+id/edtxEdtPrflBio"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:hint="Bio"
android:textColor="@color/cement_grey"
android:inputType="textImeMultiLine"
android:drawableLeft="@drawable/bio"
android:drawablePadding="10dp"
android:background="@drawable/profile_pallets_boxes_background"
android:enabled="true"
android:focusableInTouchMode="true"
/>
<com.customview.CustomEditext
android:id="@+id/edtxEdtPrflDOB"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:hint="Date of Birth"
android:textColor="@color/cement_grey"
android:inputType="date|textImeMultiLine"
android:drawableLeft="@drawable/dob"
android:drawablePadding="10dp"
android:background="@drawable/profile_pallets_boxes_background"
android:focusableInTouchMode="true"
android:enabled="true"
/>
<com.customview.CustomEditext
android:id="@+id/edtxEdtPrflGender"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:hint="Gender"
android:textColor="@color/cement_grey"
android:inputType="textImeMultiLine"
android:editable="false"
android:drawableLeft="@drawable/gender"
android:drawablePadding="10dp"
android:background="@drawable/profile_pallets_boxes_background"
android:enabled="false"
android:focusableInTouchMode="true"
/>
<TextView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="Private Information"
android:textColor="@color/orange"
android:background="@drawable/app_base_background"/>
<com.customview.CustomEditext
android:id="@+id/edtxEdtPrflEmail"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:hint="Email"
android:textColor="@color/cement_grey"
android:inputType="textEmailAddress|textImeMultiLine"
android:drawableLeft="@drawable/mail"
android:drawablePadding="10dp"
android:background="@drawable/profile_pallets_boxes_background"
android:enabled="true"
android:focusableInTouchMode="true"
/>
<com.customview.CustomEditext
android:id="@+id/edtxEdtPrflPhone"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:hint="Phone"
android:textColor="@color/cement_grey"
android:inputType="phone|textImeMultiLine"
android:maxLength="10"
android:drawableLeft="@drawable/phone"
android:drawablePadding="10dp"
android:background="@drawable/profile_pallets_boxes_background"
android:enabled="false"
android:focusableInTouchMode="true"
/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
现在由于Editext,我无法滚动我的NestedScrollView,我使用下面的解决方案,哪个工作正常,但它阻止任何Editext的Softkeyboard打开。
public class CustomEditext extends EditText {
public CustomEditext(Context _Context){
super(_Context);
}
public CustomEditext(Context context, AttributeSet attrs){
super(context,attrs);
}
public CustomEditext(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
return false;
}
}
答案 0 :(得分:2)
我有类似的问题。设计支持库是一个很棒的库,但目前它有点儿错误。您可以在此处找到有关NestedScrollView的一些问题:NestedScrollView Issues。 我们将不得不等待下一次更新,直到我们有一个完全可用的库。
在此之前,您可以尝试一些替代的库,例如:ObservableScrollView。
使用非常简单:
1 - 将依赖项添加到build.gradle文件中:
repositories {
mavenCentral()
}
dependencies {
// Other dependencies are omitted
compile 'com.github.ksoichiro:android-observablescrollview:1.5.0'
}
2 - 在您的布局中,将ObservableScrollView声明为:
<com.github.ksoichiro.android.observablescrollview.ObservableListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3 - 在您的Activity中,实现ObservableScrollViewCallbacks:
public class MainActivity extends AppCompatActivity
implements ObservableScrollViewCallbacks {
4 - 实施所需的方法并使用它们:
@Override
public void onScrollChanged(int scrollY, boolean firstScroll,
boolean dragging) {
}
@Override
public void onDownMotionEvent() {
}
@Override
public void onUpOrCancelMotionEvent(ScrollState scrollState) {
}
5 - 在滚动列表时显示/隐藏ActionBar的示例:
@Override
public void onUpOrCancelMotionEvent(ScrollState scrollState) {
ActionBar ab = getSupportActionBar();
if (scrollState == ScrollState.UP) {
if (ab.isShowing()) {
ab.hide();
}
} else if (scrollState == ScrollState.DOWN) {
if (!ab.isShowing()) {
ab.show();
}
}
}
希望它有所帮助。
答案 1 :(得分:1)
将android:windowSoftInputMode="adjustResize"
添加到清单文件中的活动解决了我的问题。