android: 如何在EditText自定义背景和InputTextLayout Label之间设置margin/padding?
android: How to set margin/padding between EditText custom background and InputTextLayout Label?
好吧,我想在按下状态的 EditText 和 InputTextLayout 标签之间设置 margin/padding。
这是我的图片 - desired design
主要Xml代码-`
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="56dp"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingRight="24dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:src="@drawable/headphones_3" />
<android.support.design.widget.TextInputLayout
android:id="@+id/textLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:visibility="gone"
app:theme="@style/TextLabel">
<EditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/password_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:theme="@style/TextLabel">
<EditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/edit_text_style"
android:drawablePadding="@dimen/floating_hint_margin"
android:hint="Password"
android:inputType="textPassword"
android:paddingLeft="@dimen/floating_hint_margin" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
`
尽管现在我只将自定义主题应用于“密码”TextInputLayout。!
这里是edit_text_style
的代码
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- focused state -->
<item android:state_focused="true">
<shape android:shape="rectangle">
<solid android:color="#80FFFFFF" />
<stroke android:width=".5dp" android:color="@color/colorPrimary" />
<corners android:radius="6dp" />
</shape>
</item>
<!-- normal state -->
<item>
<shape>
<solid android:color="@android:color/transparent" />
<stroke android:width="2dp" android:color="@color/colorPrimary" />
<corners android:radius="22dp" />
</shape>
</item>
我得到的结果 - Resulted Image
如您所见,Label 上升到光标处,Label 和 EditText 背景之间没有填充。
以及如何将 Label 设置到 EditText 背景开始的位置(因为它现在位于光标顶部)?
(对不起我的英语不好)
更新: 让我来解释一下 - 再看一遍那些图片!我想在 TextInputLayout 标签之间设置填充(当你聚焦它时,这里是密码)。你们说的是在自定义可绘制对象(此处为 edit_text_style)光标和标签之间创建填充,但我想在我添加的可绘制对象和标签(处于聚焦状态时出现的密码文本)之间进行填充,并且还想设置标签位置,因为它向上移动到光标开始。!
您可以将自定义样式应用于您的 EditText(您需要填充的样式 onPressedState
):
<EditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:inputType="textEmailAddress" />
风格:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/next_white">
<inset android:insetLeft=""YOUR_PADDING_IN_DP dp"/>
来源:android:drawableLeft margin and/or padding
对于边距,无法使用 drawable 来实现,但您仍然可以定义一个动画来实现这一点:
在res/anim中创建一个margin_animation.xml :
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromYDelta="0" android:toYDelta="100%" />
</set>
来源:In Android, is it possible to set the margin from the drawable?
@Ansh.... You are set the drawable to your TextInputLayout and take padding to both edittext and TextInputLayout.....
按照你的方式,它不太好用....如果你想用 textinputlayout 做你想做的事
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="56dp"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingRight="24dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:src="@mipmap/ic_launcher" />
<android.support.design.widget.TextInputLayout
android:id="@+id/textLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:padding="10dp"
android:background="@drawable/edit_text_style"
android:visibility="visible">
<EditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:hint="Email"
android:inputType="textEmailAddress"
android:padding="10dp" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/password_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edit_text_style"
android:padding="10dp"
android:visibility="visible">
<EditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:padding="10dp"
android:hint="Password"
android:inputType="textPassword"
/>
</android.support.design.widget.TextInputLayout>
</LinearLayout>
而且在你的 drawable 中只取一个矩形或圆形以获得更好的视图
好吧,我想在按下状态的 EditText 和 InputTextLayout 标签之间设置 margin/padding。
这是我的图片 - desired design
主要Xml代码-`
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="56dp"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingRight="24dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:src="@drawable/headphones_3" />
<android.support.design.widget.TextInputLayout
android:id="@+id/textLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:visibility="gone"
app:theme="@style/TextLabel">
<EditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/password_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:theme="@style/TextLabel">
<EditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@drawable/edit_text_style"
android:drawablePadding="@dimen/floating_hint_margin"
android:hint="Password"
android:inputType="textPassword"
android:paddingLeft="@dimen/floating_hint_margin" />
</android.support.design.widget.TextInputLayout>
</LinearLayout>
`
尽管现在我只将自定义主题应用于“密码”TextInputLayout。!
这里是edit_text_style
的代码<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- focused state -->
<item android:state_focused="true">
<shape android:shape="rectangle">
<solid android:color="#80FFFFFF" />
<stroke android:width=".5dp" android:color="@color/colorPrimary" />
<corners android:radius="6dp" />
</shape>
</item>
<!-- normal state -->
<item>
<shape>
<solid android:color="@android:color/transparent" />
<stroke android:width="2dp" android:color="@color/colorPrimary" />
<corners android:radius="22dp" />
</shape>
</item>
我得到的结果 - Resulted Image
如您所见,Label 上升到光标处,Label 和 EditText 背景之间没有填充。
以及如何将 Label 设置到 EditText 背景开始的位置(因为它现在位于光标顶部)?
(对不起我的英语不好)
更新: 让我来解释一下 - 再看一遍那些图片!我想在 TextInputLayout 标签之间设置填充(当你聚焦它时,这里是密码)。你们说的是在自定义可绘制对象(此处为 edit_text_style)光标和标签之间创建填充,但我想在我添加的可绘制对象和标签(处于聚焦状态时出现的密码文本)之间进行填充,并且还想设置标签位置,因为它向上移动到光标开始。!
您可以将自定义样式应用于您的 EditText(您需要填充的样式 onPressedState
):
<EditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:inputType="textEmailAddress" />
风格:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/next_white">
<inset android:insetLeft=""YOUR_PADDING_IN_DP dp"/>
来源:android:drawableLeft margin and/or padding
对于边距,无法使用 drawable 来实现,但您仍然可以定义一个动画来实现这一点:
在res/anim中创建一个margin_animation.xml :
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromYDelta="0" android:toYDelta="100%" />
</set>
来源:In Android, is it possible to set the margin from the drawable?
@Ansh.... You are set the drawable to your TextInputLayout and take padding to both edittext and TextInputLayout.....
按照你的方式,它不太好用....如果你想用 textinputlayout 做你想做的事
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="56dp"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingRight="24dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:src="@mipmap/ic_launcher" />
<android.support.design.widget.TextInputLayout
android:id="@+id/textLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:padding="10dp"
android:background="@drawable/edit_text_style"
android:visibility="visible">
<EditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:hint="Email"
android:inputType="textEmailAddress"
android:padding="10dp" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/password_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edit_text_style"
android:padding="10dp"
android:visibility="visible">
<EditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:padding="10dp"
android:hint="Password"
android:inputType="textPassword"
/>
</android.support.design.widget.TextInputLayout>
</LinearLayout>
而且在你的 drawable 中只取一个矩形或圆形以获得更好的视图