当前位置: 首页 > 知识库问答 >
问题:

listview和edittext软键盘

滕星纬
2023-03-14

我有带有edittext字段的自定义模板。当我点击软键盘上的“下一步”按钮时,它只移动了两次焦点--比按钮变成了“确定”。清单有12项。有没有办法导航到所有的项目,而不仅仅是2?你能帮帮我吗?

<?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:padding="3dp" >

    <TextView
        android:id="@+id/head"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="true"
        android:paddingBottom="3dp"
        android:paddingTop="3dp" >

        <EditText
            android:id="@+id/value"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:gravity="left"
            android:inputType="number" >

            <requestFocus />
        </EditText>

        <TextView
            android:id="@+id/description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:width="100dp" />

    </LinearLayout>

</LinearLayout>
<?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" >

    <TextView
        android:id="@+id/head"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/calk_1"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="382dp"
        android:divider="@color/reddivider"
        android:dividerHeight="@dimen/twodp"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:smoothScrollbar="true" >

    </ListView>

</LinearLayout>

公共视图getView(int position,View convertView,ViewGroup parent){

// assign the view we are converting to a local variable
View v = convertView;

// first check to see if the view is null. if so, we have to inflate it.
// to inflate it basically means to render, or show, the view.
if (v == null) {
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    v = inflater.inflate(R.layout.list_view, null);
}

/*
 * Recall that the variable position is sent in as an argument to this method.
 * The variable simply refers to the position of the current object in the list. (The ArrayAdapter
 * iterates through the list we sent it)
 * 
 * Therefore, i refers to the current Item object.
 */
CalcItem i = objects.get(position);
int last=getCount()-1;

if (i != null) {

    // This is how you obtain a reference to the TextViews.
    // These TextViews are created in the XML files we defined.

    TextView hd = (TextView) v.findViewById(R.id.head);
    TextView tx = (TextView) v.findViewById(R.id.text);
    TextView ds = (TextView) v.findViewById(R.id.description);
    EditText vl = (EditText) v.findViewById(R.id.value);

    if (position==0){
        vl.setNextFocusUpId(last);
        vl.setNextFocusDownId(1);
    } else  if (position==last){
        vl.setNextFocusDownId(0);
    } else {
        vl.setNextFocusDownId(position+1);
    }

    if (hd != null){
        hd.setText(i.getHead());
    }
    if (tx != null){
        tx.setText(i.getText());
    }
    if (ds != null){
        ds.setText(i.getDescription());
    }
    if (vl != null){
        vl.setText(Integer.toString(i.getValue()));
    }
}

// the view must be returned to our activity
return v;

}

共有1个答案

缑赤岩
2023-03-14

使用android:nextfocusup=“id”android:nextfocusdown=“id”-如文档中所述。

下面是文档中的一个示例

<LinearLayout
    android:orientation="vertical"
    ... >
  <Button android:id="@+id/top"
          android:nextFocusUp="@+id/bottom"
          ... />
  <Button android:id="@+id/bottom"
          android:nextFocusDown="@+id/top"
          ... />
</LinearLayout>
 类似资料:
  • 问题内容: 我汇总了一个简单的测试项目,该项目显示了一个包含EditText的PopupWindow(在Android 2.2上)。如我所料,当我点击EditText时,将显示软键盘。但是,软键盘覆盖了EditText,因此无法平移屏幕以使EditText保持应有的状态。我的代码: TestAdjustPanActivity.java: main.xml: popup.xml: …并且我的Andr

  • 本文向大家介绍Android屏蔽EditText软键盘的方法,包括了Android屏蔽EditText软键盘的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android屏蔽EditText软键盘的方法。分享给大家供大家参考。具体如下: java代码如下: 可以通过下面方法恢复显示: 希望本文所述对大家的Android程序设计有所帮助。

  • 我正在为用户编写一个选择国家的过程。我有一个edittext链接到适配器,显示所有可用选项。 在我的清单中,我将活动设置为 android: windowSoftInputMode="stateAlwaysHidden" 我需要完全禁用软键盘。 除了一种情况外,它工作正常。如果用户长时间点击/按下编辑文本,键盘就会弹出。 有没有办法通过使用代码或在清单中永久禁用特定活动中的键盘? 我的代码: 我的

  • 我有一个SherlockFragmentActivity和一个位于TabManager中的Sherlock Fragment。在这个片段中,我在LinearLayout中有单选按钮、复选框、按钮和编辑文本。按下编辑文本时,键盘有时不响应。 在2.1 AVD中,键盘响应不一致,在4.0 AVD中,键盘根本没有响应,而在设备上,键盘响应不一致。有时按下其他对象会激活显示键盘的功能。 以下是编辑文本的X

  • 本文向大家介绍Android EditText被软键盘遮盖的处理方法,包括了Android EditText被软键盘遮盖的处理方法的使用技巧和注意事项,需要的朋友参考一下 这两天android app新增了透明栏效果,结果发现键盘弹起后会遮盖屏幕底部的EditText,没有像想象中的调整窗口大小,并滚动ScrollView,将EditText显示在键盘上方。之前也遇到过类似问题,所以解决后就干脆写

  • 本文向大家介绍Android 设置Edittext获取焦点并弹出软键盘,包括了Android 设置Edittext获取焦点并弹出软键盘的使用技巧和注意事项,需要的朋友参考一下 Android 设置Edittext获取焦点并弹出软键盘 ps:android页面进入edittext自动获取焦点,弹出软键盘解决方法 在edittext的父布局中加入上面2个属性 以上就是本文的全部内容,希望本文的内容对大