在ListView中居中文本

3
我发现很难将列表视图中的文本居中,尝试使用wrap_content和layout_gravity=center 对几乎所有内容进行了调整,但文本并没有移动。
下面是我的agenceEco类。
package com.blabla;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;

import android.app.ListActivity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.*;


public class agenceEco extends Activity {

    ListView myList;


    String[] listContent = {

            "January",

            "February",

            "March",

            "April",

            "May",

            "June",

            "July",

            "August",

            "September",

            "October",

            "November",

            "December"

    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.agence);
        myList = (ListView)findViewById(R.id.liste_agences);



        ArrayAdapter<String> adapter

                = new ArrayAdapter<String>(this,

                R.layout.simple_list_item,

                listContent);

        myList.setAdapter(adapter);


        myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> myAdapter, View myView, int myItemInt, long mylng) {
                String selectedFromList = (String)(myList.getItemAtPosition(myItemInt));
                Toast.makeText(getBaseContext(),selectedFromList,Toast.LENGTH_SHORT).show();

            }
        });
    }




}

这是simple_list_item.xml文件。
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@android:id/text1"
          android:paddingTop="10dip"
          android:paddingBottom="10dip"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:textColor="@color/black"
          android:background="@color/white"
          android:gravity="center"
        />

这是agence.xml文件。
   <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:background="@color/white"
              android:layout_gravity="center_horizontal">
    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:background="@color/black">

        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:textColor="@color/white"
                  android:text=" "
                  android:layout_gravity="center"

                />
        <TextView android:id="@+id/txt_date"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:textColor="@color/white"
                  android:text="Choix de l'agence"
                  android:layout_gravity="center"
                  android:textStyle="bold"
                />
        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:textColor="@color/black"
                  android:text=" "
                  android:layout_gravity="center"

                />
    </LinearLayout>
    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:textColor="@color/black"
              android:text=" "
              android:layout_gravity="center"

            />
    <ListView android:id="@+id/liste_agences"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:background="@color/white"
              android:layout_gravity="center_horizontal"

            ></ListView>


</LinearLayout>

给 TextView 的宽度和高度都设置为 fill_parent 可能会有帮助,而不是使用 wrap content。 - Triode
2个回答

10

android:layout_gravity="center" 表示告诉 TextView 的父级容器它应该放在哪里。但是这并不是你想要的,因为 ListView 会忽略此属性。请将其替换为 android:gravity="center"。这会告诉 TextView 如何对齐其中的文本,此处是居中对齐。

当 TextView 没有填满整个空间时,这将没有任何影响(因为文本将与视图大小相匹配,因此对齐不会发生太大变化)。由于每个条目中只有一个 TextView,因此将 android:layout_widthandroid:layout_height 都设置为 fill_parent 是合理的。


<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@android:id/text1"
          android:paddingTop="10dip"
          android:paddingBottom="10dip"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:textColor="#ff000000"
          android:background="#ffffffff"
          android:gravity="center"
        />

在 simple_list_item.xml 中,它并没有任何效果(之前和之后),看起来是居中的,但当被 ListView 实现时,它会左对齐。 - Mike Bryant
我测试过了,将我的代码添加到答案中。我按照要求更改了属性。除此之外,我还移除了可能会造成麻烦的 paddingLeft。虽然没有提到这一点,但是在移除之后请尝试一下。这对我来说有效(在Android 4.0.3上有效,在其他版本上也应该有效)。 - user658042
我在第一篇帖子中更新了我的代码,现在是不成功的编辑后的版本。 - Mike Bryant
我不知道是否可能做一些类似于左填充50%的操作,我尝试过了,但是由于填充-left 10dp移动了文本,因此可能存在其他类似的解决方案。 - Mike Bryant
好的,你需要将android:layout_width在你的listview和外部LinearLayout上都改为fill_parent。然后它就可以工作了。这里的问题类似于文本视图描述的问题,如果列表视图与文本具有相同的宽度,则没有空间来居中任何内容。至于百分比,这些应该不起作用,因为它们不受支持。有关可用单位的列表,请参见文档 - user658042
显示剩余2条评论

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接