我在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>
我有这种行为......(不受欢迎的)
另一方面,当使用
在代码中声明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"
,我有这个(想要的)外观......
这有什么可能,宽度和高度相同?
这是因为在代码中,它们意味着添加了一个包装布局吗?
答案 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.