我使用android TextInputLayout在EditText上显示浮动标签。
但是我想在EditText的左边显示一个ProgressBar,因此我在相对布局中的TextInputLayout和EditText中添加了一个相对布局。
通过这样做,浮动标签不起作用。
如果我从TextInputLayout的相对布局中删除并使EditText指向它的子项,那么它就可以了。
EditText也需要成为TextInputLayout的直接子项,如果是这样,我们如何将另一个小部件放到EditTexts左边,如ProgressBar。
作为TextInputLayout inhertis来自LinearLayout,向其添加子项将垂直添加子项,但我想在EditText之上添加视图。
<android.support.design.widget.TextInputLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/holderName"
android:layout_height="wrap_content"
android:layout_width="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputEditText
android:id="@+id/etField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
>
</android.support.design.widget.TextInputEditText>
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyle"
android:layout_width="16dp"
android:layout_height="match_parent"
android:indeterminateTint="@color/primary"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="15dp"
android:visibility="visible"
/>
</FrameLayout>
答案 0 :(得分:1)
解决方案是将TextInputLayout
和ProgressBar
用FrameLayout
包裹起来,如下所示:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputLayout
android:id="@+id/holderName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp">
<android.support.design.widget.TextInputEditText
android:id="@+id/etField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name" />
</android.support.design.widget.TextInputLayout>
<ProgressBar
android:id="@+id/progress"
style="?android:attr/progressBarStyle"
android:layout_width="16dp"
android:layout_height="match_parent"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="15dp"
android:indeterminateTint="@color/primary"
android:visibility="visible" />
</FrameLayout>
答案 1 :(得分:0)
该功能不可用。在addView()
中,它会直接搜索EditText
。
这是代码
@Override
public void addView(View child, int index, final ViewGroup.LayoutParams params) {
if (child instanceof EditText) {
mInputFrame.addView(child, new FrameLayout.LayoutParams(params));
// Now use the EditText's LayoutParams as our own and update them to make enough space
// for the label
mInputFrame.setLayoutParams(params);
updateInputLayoutMargins();
setEditText((EditText) child);
} else {
// Carry on adding the View...
super.addView(child, index, params);
}
}
因此,第一个孩子必须是EditText
类型。
如果你想要这个功能,那么在RelativeLayout
里面拿走你的TextInputLayout
和ProgressBar
并设置进度条的位置