我试图将EditText或AppCompatEditText放在CardView中,但EditText没有获得焦点。无法找到我在布局中遗漏的内容。
<android.support.v7.widget.CardView
android:id="@+id/card_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="14dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="14dp"
app:cardBackgroundColor="@color/color_secondary_ultra_light">
<android.support.v7.widget.AppCompatEditText
android:id="@+id/edit_username"
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:drawablePadding="4dp"
android:drawableTint="@android:color/darker_gray"
android:drawableRight="@mipmap/ic_person_black_24dp"
android:hint="Username"
android:inputType="textWebEmailAddress"
android:maxLines="1"
android:textColorHint="@android:color/darker_gray"
android:textSize="18sp"
android:focusable="true"
android:clickable="true"/>
</android.support.v7.widget.CardView>
发布的解决方案here在我的案例中不起作用。
答案 0 :(得分:2)
请勿使用 AppCompatEditText 使用 EditText 它默认使用AppCompatEditText
<android.support.v7.widget.CardView
android:id="@+id/card_username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="14dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="14dp"
app:cardBackgroundColor="@color/color_secondary_ultra_light">
<EditText
android:id="@+id/edit_username"
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:drawablePadding="4dp"
android:drawableTint="@android:color/darker_gray"
android:drawableRight="@mipmap/ic_person_black_24dp"
android:hint="Username"
android:inputType="textWebEmailAddress"
android:maxLines="1"
android:textColorHint="@android:color/darker_gray"
android:textSize="18sp"
android:focusable="true"
android:clickable="true"/>
</android.support.v7.widget.CardView>
您可以查看 AppCompatEditText 文档,默认情况下EditText会使用它。
在布局中使用EditText时,将自动使用此选项。 编写自定义时,您只需要手动使用此类 视图。
答案 1 :(得分:1)
我已将android:descendantFocusability="beforeDescendants"
属性放在 CardView 中,现在它正常运行。
感谢所有人的努力。
答案 2 :(得分:0)
使用编辑文本代替AppCompatEditText。
答案 3 :(得分:0)
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="10dip"
android:paddingRight="10dip"
>
<EditText
android:id="@+id/Edit"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="textCapSentences|textMultiLine"
android:overScrollMode="always"
android:scrollbarStyle="insideInset"
android:scrollbars="vertical"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
&#13;
答案 4 :(得分:0)
虽然这里的解决方案应该有效,但您可以使用黑客来节省时间。 在您的代码中:
EditText et = (EditText)findViewById(R.id.editTextId);
et.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
((EditText) view).requestFocus();
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
});
但在使用之前,请确保您的EditText没有被其他一些视图重叠。这可能是一个不需要这种解决方法的问题。