我有一个FrameLayout,其中包含一个EditText和一个按钮。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp">
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/edittext_hint"
android:inputType="textPassword"
android:maxLength="25" />
<Button
android:id="@+id/forgottenPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:background="@null"
android:fontFamily="@font/sf_pro_display_lightitalic"
android:padding="16dp"
android:marginRight="16dp" // still, it gets cropped
android:text="@string/password_button"
android:textSize="18sp" />
</FrameLayout>
我将padding=16dp
赋予了Button,但是问号部分可见。如果我将短语缩写为“忘记了吗?”然后是“?”标记完全可见。我听不懂我什至给了marginRight=16dp
,还是...
但是当我没有设置fontFamily
属性时,它仍然完全可见。
我的困惑是,即使有padding
和marginRight
,最后一个字符又如何被裁剪。我什至尝试在问号后添加 space ,但没有任何变化。我想念什么吗?
编辑:我实际上使用strings.xml
作为按钮的文本。当我在'?'之后添加space
时在strings.xml
中,它不会影响按钮中的文本,但是,当文本经过硬编码并在'?'之后添加space
时,问号将再次完全可见。但正如人们所说,硬编码字符串是不好的。
我不能像“忘记了吗?”那样使我的短语简短,因为该应用程序是土耳其语,并且原始短语相对较长。而且,我必须使用该字体。
答案 0 :(得分:2)
那是因为您的字体是斜体。如果要在XML文件中插入空格字符,请在 
之后使用?
,如下所示:? 
。
答案 1 :(得分:0)
那是由于按钮上的填充。取下衬垫并尝试一下。
答案 2 :(得分:0)
如果您只需要一些可点击的文本,则无需按钮:
<TextView
android:id="@+id/forgottenPassword"
android:clickable="true"
android:focusable="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:fontFamily="@font/sf_pro_display_lightitalic"
android:padding="16dp"
android:marginRight="16dp"
android:text="@string/password_button"
android:textSize="18sp" />
请注意,我添加了clickable
和focusable
。