【问题标题】:change text gravity to top in Android在Android中将文本重力更改为顶部
【发布时间】:2013-10-02 05:54:48
【问题描述】:

我需要在我的 ListItems 中将 Android 文本 Gravity 动态更改为 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);

}

水平对齐工作成功,但在顶部无论如何都不起作用?我做错了什么?

请帮忙。

提前致谢。

【问题讨论】:

  • 发布该视图的屏幕截图。我认为这是您在此处提到的默认填充...
  • @Abbath 首先从您的布局文件中删除重力并尝试仅动态设置它。
  • 将 ScreenShot 用于获得可靠的解决方案。
  • 查看我更新的答案

标签: android textview gravity layout-gravity


【解决方案1】:

xml 中删除android:gravity 并更改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);

}

【讨论】:

    【解决方案2】:

    试试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>
    

    【讨论】:

    • 当 OP 想要 TextView 时为什么要使用 EditText?
    • 我不知道,但我遇到了这样的问题 o ..我用 editext 替换了它 ..它解决了我的问题 ..所以试一试 .. 还有 @Abbath 也尝试相对布局。 .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2014-09-01
    • 1970-01-01
    • 2017-01-14
    • 2021-04-18
    • 1970-01-01
    相关资源
    最近更新 更多