ListView中的EditText不可编辑
EditText in ListView is not editable
我正在尝试使用嵌套在 ListView 中的 EditText 视图构建表单。在 ListView 和 EditText 之间有几个级别的 RelativeLayout 和 LinearLayout 对象,但根据我的阅读,这应该不是问题。
能想到的我都试过了。我在 AndroidManifest 中为我的 activity 设置了 android:windowSoftInputMode="adjustPan"
,我也为我的 ListView 设置了 android:descendantFocusability="beforeDescendants"
。我什至为 ListView 和 EditText 之间的所有布局对象设置了它。但是,none 似乎有效。
我遇到的主要问题是软键盘没有显示,即使我双击文本字段以调出编辑选项,我仍然无法在 EditText 区域中输入任何内容。我是否为此使用了错误的对象控件?
这是我的 ListView 对象的布局代码。
<ListView
android:id="@+id/FormlistView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="beforeDescendants"
style="@style/KelFormListView" />
这是我的 form_list_item.xml 文件的布局代码。这是显示在表单列表中的项目。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="120dp"
android:descendantFocusability="beforeDescendants">
<!-- Top Layout -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:weightSum="10"
android:descendantFocusability="beforeDescendants"
android:id="@+id/TopLayout">
<TextView
android:id="@+id/TitleTextView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="7"
android:gravity="center_vertical"
android:text="Headling Rent (pa)"
android:textSize="16dp"
style="@style/KelFormListItemLabel" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:weightSum="2"
android:descendantFocusability="beforeDescendants"
android:background="@color/formListItemValueBackgroundColor">
<ImageView
android:id="@+id/CurrencyIconView"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_weight="0"
android:src="@drawable/icon_currency_pound"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp" />
<EditText
android:id="@+id/ValueTextView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:gravity="right|center_vertical"
android:text="20,000"
android:textSize="16dp"
android:inputType="number"
android:focusableInTouchMode="true"
android:editable="true"
style="@style/KelFormListItemValue"/>
</LinearLayout>
</LinearLayout>
<!-- Bottom Layout -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:weightSum="10"
android:id="@+id/BottomLayout"
android:descendantFocusability="beforeDescendants"
android:layout_below="@+id/TopLayout">
<TextView
android:id="@+id/BottomTitleTextView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="7"
android:gravity="center_vertical"
android:text="Headling Rent (pa)"
android:textSize="16dp"
style="@style/KelFormListItemLabel" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:weightSum="2"
android:descendantFocusability="beforeDescendants"
android:background="@color/formListItemValueBackgroundColor">
<ImageView
android:id="@+id/BottomCurrencyIconView"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_weight="0"
android:src="@drawable/icon_currency_pound"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp" />
<EditText
android:id="@+id/BottomValueTextView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:gravity="right|center_vertical"
android:text="20,000"
android:textSize="16dp"
android:inputType="number"
android:focusableInTouchMode="true"
android:editable="true"
style="@style/KelFormListItemValue"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
好的,解决了我自己的问题。主要问题与我的任何代码都无关。问题实际上是模拟器本身。在 Android ADV 中创建新的虚拟设备时,有一个名为 "Enable Keyboard" 的设置,或者类似的东西。此设置允许您将硬件键盘与模拟器一起使用,但它会阻止显示软键盘。那是我的问题。
在我看来,此设置很容易引起混淆,因为直到您显示高级设置时它才会出现。在我看来,Google 的某个人做出了一个错误的决定。 iOS 开发更容易的另一个原因......当然在我看来。
我正在尝试使用嵌套在 ListView 中的 EditText 视图构建表单。在 ListView 和 EditText 之间有几个级别的 RelativeLayout 和 LinearLayout 对象,但根据我的阅读,这应该不是问题。
能想到的我都试过了。我在 AndroidManifest 中为我的 activity 设置了 android:windowSoftInputMode="adjustPan"
,我也为我的 ListView 设置了 android:descendantFocusability="beforeDescendants"
。我什至为 ListView 和 EditText 之间的所有布局对象设置了它。但是,none 似乎有效。
我遇到的主要问题是软键盘没有显示,即使我双击文本字段以调出编辑选项,我仍然无法在 EditText 区域中输入任何内容。我是否为此使用了错误的对象控件?
这是我的 ListView 对象的布局代码。
<ListView
android:id="@+id/FormlistView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="beforeDescendants"
style="@style/KelFormListView" />
这是我的 form_list_item.xml 文件的布局代码。这是显示在表单列表中的项目。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="120dp"
android:descendantFocusability="beforeDescendants">
<!-- Top Layout -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:weightSum="10"
android:descendantFocusability="beforeDescendants"
android:id="@+id/TopLayout">
<TextView
android:id="@+id/TitleTextView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="7"
android:gravity="center_vertical"
android:text="Headling Rent (pa)"
android:textSize="16dp"
style="@style/KelFormListItemLabel" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:weightSum="2"
android:descendantFocusability="beforeDescendants"
android:background="@color/formListItemValueBackgroundColor">
<ImageView
android:id="@+id/CurrencyIconView"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_weight="0"
android:src="@drawable/icon_currency_pound"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp" />
<EditText
android:id="@+id/ValueTextView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:gravity="right|center_vertical"
android:text="20,000"
android:textSize="16dp"
android:inputType="number"
android:focusableInTouchMode="true"
android:editable="true"
style="@style/KelFormListItemValue"/>
</LinearLayout>
</LinearLayout>
<!-- Bottom Layout -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="60dp"
android:weightSum="10"
android:id="@+id/BottomLayout"
android:descendantFocusability="beforeDescendants"
android:layout_below="@+id/TopLayout">
<TextView
android:id="@+id/BottomTitleTextView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="7"
android:gravity="center_vertical"
android:text="Headling Rent (pa)"
android:textSize="16dp"
style="@style/KelFormListItemLabel" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:weightSum="2"
android:descendantFocusability="beforeDescendants"
android:background="@color/formListItemValueBackgroundColor">
<ImageView
android:id="@+id/BottomCurrencyIconView"
android:layout_width="22dp"
android:layout_height="22dp"
android:layout_weight="0"
android:src="@drawable/icon_currency_pound"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp" />
<EditText
android:id="@+id/BottomValueTextView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:gravity="right|center_vertical"
android:text="20,000"
android:textSize="16dp"
android:inputType="number"
android:focusableInTouchMode="true"
android:editable="true"
style="@style/KelFormListItemValue"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
好的,解决了我自己的问题。主要问题与我的任何代码都无关。问题实际上是模拟器本身。在 Android ADV 中创建新的虚拟设备时,有一个名为 "Enable Keyboard" 的设置,或者类似的东西。此设置允许您将硬件键盘与模拟器一起使用,但它会阻止显示软键盘。那是我的问题。
在我看来,此设置很容易引起混淆,因为直到您显示高级设置时它才会出现。在我看来,Google 的某个人做出了一个错误的决定。 iOS 开发更容易的另一个原因......当然在我看来。