我想在Material Design中实现“全角文本字段”,如下所示:https://www.google.com/design/spec/components/text-fields.html#text-fields-full-width-text-field
如何使用Material Design库?
可用的库至少在最近的版本中是这样的:
com.android.support:design:23.0.1
com.android.support:appcompat-v7:23.0.1
com.android.support:support-v4:23.0.1
我开始使用EditText
作为索引:
<EditText
android:id="@+id/receivers"
android:layout_below="@+id/toolbar"
android:layout_width="match_parent"
android:padding="20sp"
android:hint="Receivers"
android:inputType="textMultiLine"
android:gravity="top"
android:layout_height="wrap_content" />
<EditText
android:layout_height="match_parent"
android:id="@+id/new_message_text"
android:layout_below="@+id/receivers"
android:layout_width="match_parent"
android:padding="20sp"
android:hint="@string/hint_new_message"
android:inputType="textMultiLine"
android:gravity="top" />
看起来像那样
答案 0 :(得分:9)
<EditText
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@null"
android:gravity="center_vertical|start"
android:minHeight="?listPreferredItemHeight"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingLeft="?listPreferredItemPaddingLeft"
android:paddingRight="?listPreferredItemPaddingRight" />
android:background="@null"
将使用隐含的4dp填充删除下划线。android:minHeight="?listPreferredItemHeight"
扩展为56dp。视图总是至少56dp高。由于android:gravity="center_vertical|start"
,因此文本将始终垂直居中。android:paddingLeft="?listPreferredItemPaddingLeft"
和android:paddingRight="?listPreferredItemPaddingRight"
在手机上扩展到16dp,在平板电脑上扩展到24dp。容器看起来像LinearLayout
,它在API 14中引入了分隔符支持。在LinearLayout上使用这些属性:
android:divider="?listDivider"
android:showDividers="middle"
您可以使用任何自定义可绘制参考,而不是?listDivider
这是您的主题提供的属性。
1) Material Design规范与appcompat-v7库中定义的实际值之间存在一些不一致。
listPreferredItemHeight
应返回56dp,但它返回64dp。类似地,listPreferredItemHeightLarge
(在这种情况下未使用)返回80dp而不是72dp。您可以通过重新定义主题中的属性来解决此问题:
<item name="android:listPreferredItemHeight">56dp</item>
2) NOT 直接使用颜色资源作为分隔符。它的隐式高度和宽度等于-1。你需要一个自定义的形状可绘制。