您好我必须按如下所示进行布局,编辑文本必须在TextInputLayout
中才能有错误和浮动提示功能,并且右侧的微调器必须有下划线。我的问题是如何做到这一点,因为当我将EditText
添加到TextInputLayout
时,有一个填充波纹管,并且两个下划线都不在同一行。是否有可能以某种方式测量这个错误的容器高度?
答案 0 :(得分:4)
因此有两种可能性:
errorEnabled
设为false,并使用错误文字创建自定义TextView
。TextView
,其样式和字体大小可以在TextInputLayout
构造函数中找到。我没有使用这种方法,但在我的情况下它是12sp。答案 1 :(得分:4)
这是一个常见的问题,而且前几天我不得不处理这个问题。您始终可以查看guidelines here上的度量值,而不需要查看代码。
关于制作微调器匹配,你可以从添加像这个drawable
这样的背景开始<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="-1dp"
android:left="-1dp"
android:right="-1dp"
android:bottom="1dp" >
<shape android:shape="rectangle">
<padding android:top="4dp" android:bottom="4dp" />
<stroke android:width="1dp" android:color="@color/my_grey"/>
</shape>
</item>
</layer-list>
您可能希望将android:padding="0dp"
添加到Spinner,而不是使用添加与EditText不匹配的填充的simple_...
布局之一,返回纯文本视图,因为您从适配器,但继续使用下拉视图的simple_...
布局,如下面的适配器示例
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
//convertView = mInflater.inflate(R.layout.support_simple_spinner_dropdown_item, parent, false);
convertView = new TextView(parent.getContext());
}
//if you want to mimick the floating hint behaviour from the edit text,
//you can animate the label visibility here
return populateView(position, convertView, parent);
}
private View populateView(int position, View convertView, ViewGroup parent) {
// in here set your values as you usually would
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.support_simple_spinner_dropdown_item, parent, false);
}
return populateView(position, convertView, parent);
}
现在提供EditText和Spinner匹配的边距,它们将排成一行。虽然在某些布局中我必须在Spinner上设置android:layout_marginTop="0dp"