20 android listview android-edittext convertview baseadapter
我有Listview与editext和textview.
当我触摸edittext时,edittext失去焦点!
我通过设置解决了这个问题android:windowSoftInputMode="adjustPan"(AndroidManifest.xml).现在我触摸edittext而不是editext获得焦点但是应用程序标签和listview的一些原始消失(顶部).
当用户触摸edittext而不丢失应用程序标签和一些原始列表视图时,我想获得焦点.
我已实施的代码:
当用户触摸edittext时,下面的编码会得到关注,但当软键盘弹出时,应用程序标签和listview的一些原始消失.我想在用户触摸edittext时获得焦点,而不会丢失应用程序标签和一些原始列表视图.
1)的AndroidManifest.xml
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MyListViewDemoActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustPan"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
2)raw_layout.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText android:id="@+id/mEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
3)main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView android:id="@+id/mListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
4)MyListViewDemoActivity
public class MyListViewDemoActivity extends Activity {
private ListView mListView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mListView=(ListView)findViewById(R.id.mListView);
mListView.setAdapter(new MyAdapter(this));
}
}
class MyAdapter extends BaseAdapter {
private Activity mContext;
private String character[]={"a","b","c","d","e","f","g","h","i","j"};
public MyAdapter(Activity context)
{
mContext=context;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return character.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
private class Holder
{
EditText mEditText;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final Holder holder;
if (convertView == null) {
holder = new Holder();
LayoutInflater inflater =mContext.getLayoutInflater();
convertView = inflater.inflate(R.layout.raw_layout, null);
holder.mEditText = (EditText) convertView
.findViewById(R.id.mEditText);
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
holder.mEditText.setText(character[position]);
holder.mEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if (!hasFocus){
final EditText etxt = (EditText) v;
holder.mEditText.setText(etxt.getText().toString());
}
}
});
return convertView;
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题.我的数字键盘会在被qwerty键盘和EditText失去焦点取代之前暂时出现.
问题是出现的键盘会使您的EditText失去焦点.为防止这种情况,请在AndroidManifest.xml中为适当的Activity(或Activities)添加以下内容:
android:windowSoftInputMode="adjustPan"
Run Code Online (Sandbox Code Playgroud)
请参阅Android 文档:
当输入法出现在屏幕上时,它会减少应用程序UI可用的空间量.系统会决定如何调整UI的可见部分,但可能无法正确完成.为确保应用程序的最佳行为,您应指定系统在剩余空间中显示UI的方式.
要在活动中声明您的首选治疗,请使用
android:windowSoftInputMode清单<activity>元素中的属性和其中一个"adjust"值.例如,确保系统将布局调整到可用空间 - 这可确保您可以访问所有布局内容(即使它可能需要滚动) - 使用
"adjustResize"
如果没有看到您的代码,我们如何为您的问题提出可能的解决方案。因此,无论何时提出任何问题,都要保持发布可能的代码的习惯。
然而,在这里我找到了一个在 ListView 中实现Android Focusable EditText 的教程。查看示例并尝试以您的方式实施或找出问题的解决方案。
| 归档时间: |
|
| 查看次数: |
42030 次 |
| 最近记录: |