我有一个包含许多edittext字段的linerlayout。这一切都在纵向模式下正常工作,尤其是软键盘在出现编辑文本字段时才出现。
然而,当设备旋转到横向模式时,底部的几个edittexts从屏幕底部消失,无法访问它们。
解决方案似乎很简单,在最顶层的linearlayout下添加一个scrollview,并创建一个包含所有edittexts的linearlayout。
这解决了滚动问题,但现在第一个edittext会自动获得焦点并弹出软键盘。
我尝试将焦点设置为隐藏的textview并明确隐藏键盘,但没有任何东西阻止键盘显示。
这是(大部分)布局xmal文件: -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
android:showDividers="none"
android:background="#ffffff"
android:paddingTop="10dp"
android:paddingLeft="5dp"
android:paddingRight="5dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/scrollView" >
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="*">
...
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Subject"
android:id="@+id/textView3"
android:textStyle="bold" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/subject"
android:editable="false"
android:ellipsize="end"
android:singleLine="true"
android:textStyle="bold"
android:inputType="textCapWords"
android:background="@drawable/apptheme_edit_text_holo_light" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Event Text"
android:id="@+id/textView4"
android:textStyle="bold" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine|textCapSentences"
android:id="@+id/text"
android:linksClickable="false"
android:enabled="true"
android:editable="true"
android:capitalize="sentences"
android:nestedScrollingEnabled="true"
android:minLines="3"
android:gravity="top"
android:background="@drawable/apptheme_edit_text_holo_light" />
...
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Additional Comments"
android:id="@+id/textView6"
android:textStyle="bold" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine|textCapSentences"
android:id="@+id/comments"
android:minLines="3"
android:gravity="top"
android:editable="true"
android:nestedScrollingEnabled="true"
android:textAlignment="gravity"
android:background="@drawable/apptheme_edit_text_holo_light" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/id"
android:visibility="gone" />
</LinearLayout>
</ScrollView>
任何人都可以告诉我我做错了什么,或者在点击编辑文本之前如何压制键盘。
非常感谢
答案 0 :(得分:3)
在您遇到问题的活动代码(Android Manifest)中添加此内容:
android:windowSoftInputMode="stateHidden"
你可以这样编程:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
答案 1 :(得分:0)
将这些属性设置为ScrollView:
public enum CRC4_POLY
{
CRC4 = 0x0B //1011
};
public class CRC4Calc
{
private byte[] table = new byte[16];
public byte Checksum(params byte[] val)
{
if (val == null)
throw new ArgumentNullException("val");
byte c = 0;
foreach (byte b in val)
{
c = table[c ^ b];
}
return c;
}
public byte[] Table
{
get
{
return this.table;
}
set
{
this.table = value;
}
}
public byte[] GenerateTable(CRC4_POLY polynomial)
{
byte[] csTable = new byte[16];
for (int i = 0; i < 16; ++i)
{
int curr = i;
for (int j = 0; j < 4; ++j)
{
if ((curr & 0x8) != 0)
{
curr = ((curr << 1) & 0x0F) ^ (int)polynomial; // why not?: curr = ((curr ^ (int)polynomial) <<1) & 0x0F;
}
else
{
curr <<= 1;
}
}
csTable[i] = (byte)curr;
}
return csTable;
}
public CRC4Calc(CRC4_POLY polynomial)
{
this.table = this.GenerateTable(polynomial);
}
}
答案 2 :(得分:0)
你是否尝试过你的Manifest活动:
<activity
android:name=".YourActivity"
android:configChanges="orientation"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateHidden|adjustResize" >
</activity>