为什么这个EditText在用作ActionBar自定义视图时会出现奇怪的行为?

时间:2014-04-30 15:27:05

标签: android android-edittext android-actionbar

我在EditText中使用ActionBar作为自定义视图。

LayoutInflater adbInflater = LayoutInflater.from(getActivity());
View etSearchView = adbInflater.inflate(R.layout.edit_text_search, null);
etSearch = (EditText) etSearchView.findViewById(R.id.search_edit_text);

//other etSearch properties are set

MainActivity.ab.setCustomView(etSearch);

edit_text_search.xml:

<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/search_edit_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text|textAutoCorrect"
    android:hint="@string/keywords"
    android:imeOptions="actionSearch"
    android:hapticFeedbackEnabled="true"
    android:singleLine="true"
    android:textCursorDrawable="@drawable/cursor"
    android:textColor="@android:color/white">
</EditText>

我有这种行为......(不受欢迎的)

wrong

另一方面,当使用

在代码中声明EditText的宽度和高度时
LayoutParams layoutParams = new LayoutParams(
    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
etSearch.setLayoutParams(layoutParams);

并从xml文件中删除android:layout_width="match_parent"android:layout_height="wrap_content",我有这个(想要的)外观......

right

这有什么可能,宽度和高度相同?

这是因为在代码中,它们意味着添加了一个包装布局吗?

1 个答案:

答案 0 :(得分:4)

  

这有什么可能,宽度和高度相同?

EditText中使用的布局参数与将View添加到ActionBar时应用的布局参数不同。每个ViewGroup都有一个嵌套类,它实现了自己的ViewGroup.LayoutParams

默认情况下为ActionBar.LayoutParams are set to WRAP_CONTENT and MATCH_PARENT,所以当您不通过ActionBar.setCustomView(View, LayoutParams)the ActionBar falls back on the default.

申请自己的时候