我需要将Android文本Gravity
动态更改为My ListItem中的TOP
。
用于ListItem的代码:
XML布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="@dimen/ma_list_item_height">
..............
<TextView
android:id="@+id/driver_passage_text_view"
android:layout_width="0dp"
android:layout_height="@dimen/ma_list_item_height"
android:layout_weight="1"
android:gravity="center_horizontal|center_vertical"
android:text="Ivanov Ivan Ivanich"
android:padding="0"
/>
我已阅读有关Gravity
和属性setIncludeFontPadding
的内容,我已尝试使用它,但在我的情况下它不起作用,使用了代码:
private void setGravityAndText(TextView textView,String text){
if(text.length()>24){
textView.setIncludeFontPadding(true);
textView.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
}
else {
textView.setIncludeFontPadding(false);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
}
textView.setText(text);
}
水平对齐工作成功,但顶部无论如何都不起作用?我做错了什么?
请帮助。
先谢谢。
答案 0 :(得分:3)
从android:gravity
移除xml
并更改android:height="fill_parent"
,
试试这样:
XML:
<TextView
android:id="@+id/driver_passage_text_view"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="Ivanov Ivan Ivanich"
android:padding="0"
/>
Java:
private void setGravityAndText(TextView textView,String text){
if(text.length()>24){
textView.setIncludeFontPadding(true);
textView.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP);
}
else {
textView.setIncludeFontPadding(false);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
}
textView.setText(text);
}
答案 1 :(得分:0)
尝试使用EDITTEXT
<EditText
android:id="@+id/driver_passage_text_view"
android:layout_width="0dp"
android:layout_height="@dimen/ma_list_item_height"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="start"
android:maxLines="1"
android:gravity="center"
android:hint="Some hint text"
></EditText>