【问题标题】:MvxListVIew ItemLongClick binding with EditText in itMvxListVIew ItemLongClick 与 EditText 绑定
【发布时间】:2017-03-07 07:11:18
【问题描述】:

我想在MvxListView 中有EditText,它的ItemLongClick 绑定在其中正常工作(使用模板)。我使用的开发框架是 Xamarin.Android 中的MvvmCross(写在C#)。

我已经尝试了正常的方法,EditText 似乎占据了MvxListView 项目中的所有焦点。这意味着,ItemLongClick 仅适用于项目的 EditText 部分。重要的是要知道当我禁用 EditText (android:focusable="false") 的可聚焦时,ItemLongClick 在项目的所有部分都有效(牺牲了 EditText 不工作)。我尝试的最后一件事是在我的项目布局的根元素(基于this answer)上设置android:descendantFocusability="blocksDescendants",它的作用与禁用EditText 焦点相同。

下面是我写的代码。

.axml 中的 MvxListView

...
<Mvx.MvxListView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    local:MvxItemTemplate="@layout/table_shipment_item_layout"
    android:divider="#BCBCBC"
    android:dividerHeight="1dp"
    android:descendantFocusability="afterDescendants"
    android:focusable="false"
    local:MvxBind="ItemsSource ScannedItems; ItemLongClick RemoveItemCommand;" />
...

table_shipment_item_layout.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/custom_clickable_item">
    ...
    <EditText
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:textSize="16.0dp"
        android:text="5"
        android:padding="8.0dp"
        android:maxLines="1"
        android:singleLine="true"
        android:textColor="#000000"
        android:textColorHint="#D3D3D3"
        android:background="@drawable/custom_textbox"
        android:inputType="number|numberDecimal"
        android:digits="0123456789."
        android:layout_gravity="right|center_vertical"
        local:MvxBind="Text Quantity;" />
</LinearLayout>

如您所见,我使用的是EditText,因此用户可以编辑每个扫描项目的数量。有什么解决方法吗?除了MvxListView 中的EditText 之外,我也愿意接受另一种方法(如果有的话)。提前致谢。

【问题讨论】:

    标签: c# android android-layout xamarin mvvmcross


    【解决方案1】:

    您使用的android:descendantFocusability="blocksDescendants" 在您的Mvx.MvxListView 中不起作用,您需要将其添加到行行xml 的根布局中。

    还有人认为您在Mvx.MvxListView 中声明了android:focusable="false",这也不起作用,您需要在您的情况下添加子xml 内部布局EditText

    并且根据经验EditTextListView 中无法正常工作。如果您想分别从每一行获取输入。

    您可以使用TextView 代替EditText 并打开并输入DialogEditText,然后获取您的输入值并设置到您的TextView 和您的DataList 中。

    您可以使用ScrollViewLienarelayoutEditText创建自定义ListView,这样不需要打开和输入Dialog

    【讨论】:

    • 是的,我已经尝试了所有这些descendantFocusability,但这些都不起作用。它们在那里是因为我尝试了很多次后都没有删除它。根据您的经验,您是否可以建议任何其他方法来解决此问题?
    • 感谢您的建议。是否有任何链接或教程可以使用输入DialogEditText?通过使用ScrollView,它还会使用local:MvxItemTemplateItemsSource 绑定吗?如果是这样,项目模板是否也应该窃取父级的焦点?
    • 您需要在单击 EditText 时创建一个对话框。请点击此链接查看对话框techblogon.com/…
    猜你喜欢
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多