我需要使用TextView显示一个视图作为字符计数器和两个EditText。一个进入主题,另一个进入消息。
但是当显示键盘时,无法滚动视图。键盘隐藏了视图的下半部分。
我需要在显示键盘时,视图适合剩余空间并允许用户单击并滚动视图,类似于gmail的撰写邮件视图。
这是我的布局,对我来说不起作用:
<?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="fill_parent"
android:orientation="vertical" >
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" >
</include>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:isScrollContainer="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<android.support.v7.widget.AppCompatTextView
android:id="@+id/caracter_counter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:paddingBottom="5dip"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:paddingTop="10dip"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="?android:textColorPrimary" />
<android.support.v7.widget.AppCompatEditText
android:id="@+id/subject"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="25dip"
android:hint="Subject"
android:inputType="textMultiLine"
android:maxLength="@integer/max_length"
android:nextFocusDown="@+id/edit_message"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="?android:textColorPrimary" />
<android.support.v7.widget.AppCompatEditText
android:id="@+id/message"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:hint="Message"
android:inputType="textMultiLine"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="?android:textColorPrimary" />
</LinearLayout>
</ScrollView>
</LinearLayout>
我在清单中设置了android:windowSoftInputMode="adjustResize"
,但它不起作用。
像这样:
修改
我尝试使用此功能,但不能正常工作,软键关键字不会推动滚动视图,第二个编辑文本会被软关键字覆盖。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" >
</include>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/toolbar"
android:fillViewport="true" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="3" >
<android.support.v7.widget.AppCompatTextView
android:id="@+id/caracter_count"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_weight="0.2"
android:paddingBottom="5dip"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:paddingTop="10dip"
android:text="@string/app_name"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="?android:textColorPrimary" />
<android.support.v7.widget.AppCompatEditText
android:id="@+id/edit_subject"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="25dip"
android:layout_weight="0.5"
android:hint="Subject"
android:inputType="textMultiLine"
android:maxLength="@integer/max_length"
android:nextFocusDown="@+id/edit_message"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="?android:textColorPrimary" />
<android.support.v7.widget.AppCompatEditText
android:id="@+id/edit_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2.3"
android:hint="Message"
android:inputType="textMultiLine"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="?android:textColorPrimary" />
</LinearLayout>
</ScrollView>
</RelativeLayout>
得到这个:
我尝试使用清单中android:windowSoftInputMode="stateVisible|adjustResize|adjustPan"
的所有组合。
我做错了什么?
提前致谢。
答案 0 :(得分:0)
我遇到了同样的问题。我使用相对布局来修复而不是线性布局,它按预期工作。您可以尝试相对布局。这并不困难,因为这不是一个复杂的布局层次结构。
修改
我尝试了你给定的xml代码。没有对java代码做任何修改。但是删除了组件中的权重。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- replaced your toolbar with a textview just for testing -->
<TextView
android:id="@+id/toolbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TextView>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/toolbar"
android:fillViewport="true" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<!-- deleted weightsum -->
<TextView
android:id="@+id/caracter_count"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:paddingBottom="5dip"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:paddingTop="10dip"
android:text="@string/app_name"
android:textColor="?android:textColorPrimary" />
<!-- deleted weightsum -->
<EditText
android:id="@+id/edit_subject"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="25dip"
android:hint="Subject"
android:inputType="textMultiLine"
android:nextFocusDown="@+id/edit_message"
android:textColor="?android:textColorPrimary" />
<!-- deleted weightsum -->
<EditText
android:id="@+id/edit_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Message"
android:inputType="textMultiLine"
android:textColor="?android:textColorPrimary" />
<!-- deleted weightsum -->
</LinearLayout>
</ScrollView>
</RelativeLayout>
试试这个。我想这就是你要找的东西。但如果你的要求没问题,你将不得不移除重量。
答案 1 :(得分:0)
很抱歉迟到的回复并抱歉对xml文件进行了硬编码 下面的xml文件对我来说就像一个魅力 试试这个知道
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" >
<include
android:id="@+id/toolbar"
layout="@layout/custon_action_calander_new_event" >
</include>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/toolbar"
android:fillViewport="true" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="3" >
<TextView
android:id="@+id/caracter_count"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:paddingBottom="5dip"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:paddingTop="10dip"
android:text="wLHVBSHSD VHHHJBCVJHDBV"
android:textColor="#000000" />
<EditText
android:id="@+id/edit_subject"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="25dip"
android:layout_weight="0.5"
android:hint="Subject"
android:textColor="#000000" />
<EditText
android:id="@+id/edit_message"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2.3"
android:hint="Message"
android:inputType="textMultiLine"
android:textColor="#000000" />
</LinearLayout>
</ScrollView>