代码之家  ›  专栏  ›  技术社区  ›  Christian

Android在列表中居中文本

  •  2
  • Christian  · 技术社区  · 14 年前

    假设我有一个包含以下元素的字符串列表: “一个”, “两个”, “三个”, “四”

    这样地:

                                          One
                                          Two
                                          Three
                                          Four
    

    4 回复  |  直到 14 年前
        1
  •  1
  •   Aurora VISHAL VIRADIA    14 年前

    我不知道你的应用程序是如何运行的,如果一个ListView是严格要求的,但是你想要的效果可以通过使用 TableLayout TableRows . TableLayout将按照您所描述的,为每一行排列每一列中的元素。

    话虽如此,TableLayout不支持在行或网格线之间有线条(尽管我似乎有一些聪明的技巧,包括将TableRow的背景颜色改为黑色,然后将TableRow中视图对象的填充和背景颜色更改为白色,得到一条黑色分隔线(但这并不总是根据视图对象而起作用)。

    我也遇到了类似的麻烦,这是我检查的第一条路。它对我的情况没有解决办法,但这可能对你有用。如果你真的能找到一种把文本排列成一个列表的方法,我很乐意听听。

    编辑: 我还觉得值得一提的是(根据对话进展情况),您还可以设置 row.setOnClickListener()

        2
  •  1
  •   Ye Lin Aung    14 年前

    你可以设置 gravity 在你想成为中心和 detail

    android:gravity="center_horizontal"
    
        3
  •  0
  •   shinmai    14 年前

    用layout\u gravity=“center\u horizontal”或

    nvm:那显然行不通。。

    等等。。您想要一个列表,其中每一行都可以在整个屏幕宽度内单击,您想要将所有行向左对齐,并且将所有对齐的文本居中而不打断对齐?

        4
  •  0
  •   adamp    14 年前

    听起来你想把你的物品放在一个有 layout_width="wrap_content" 把整个父母放在中间。

    也许是这样的?

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
        <TextView android:text="Content above..."
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
        <LinearLayout android:orientation="vertical"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal">
            <TextView android:text="One"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <TextView android:text="Two"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <TextView android:text="Three"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </LinearLayout>
    
        <TextView android:text="Content below..."
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />    
    </LinearLayout>
    

    记住 gravity layout_gravity . 这个 重力 重力布局 layout_ )指视图在其父视图中的布局。

    如果您希望类似地格式化ListView项,请使用类似的方法作为列表项布局,并使用ListView本身 layout_width="fill_parent" layout_height="fill_parent" :

    <LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:minHeight="?android:attr/listPreferredItemHeight"
        android:weightSum="2"
        android:gravity="center">
        <TextView android:id="@+id/text" 
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    </LinearLayout>
    

    text minHeight

    在这种情况下,均匀定心是由以下各项的组合来处理的: weightSum 重力 在线性布局和 layout_weight 在文本视图上。TextView的权重除以其父级的权重和将决定LinearLayout将为其提供的水平空间的百分比。在上面的示例中,它将获得可用水平空间的1/2,但居中。

    由于ListView从不知道当前不在屏幕上的列表项的内容,因此无法让它测量适配器中每个项的文本以完美地将内容居中。您必须使用类似于上面示例的列表项布局来近似它。