创建一行宽度相等的TextView

时间:2011-06-23 07:01:09

标签: android

我正在尝试创建一个三个文本视图彼此相邻的布局。文本视图的长度不同。

我想做的就是安排它们,使它们总是具有相同的layout_width,而不管文本的长度如何。

我试过的方法:

1)我尝试使用linear_layout并将textviews的权重设置为1但不执行此操作,因为它仅适用于所有textViews定位后的剩余宽度。

2)我还尝试使用表格布局并使用stretchColumns =“*”拉伸所有列。但是,这也会将所需的宽度分配给文本的长度,然后才会拉伸列。

3)这是一个黑客,但这也不起作用。我试图在相对布局中有一个线性布局,三个文本视图没有文本,但通过设置它们的权重强制它们具有相等的宽度。这可以工作,但我希望我的下一个视图在相对布局中将自己与线性布局中视图的右边缘和左边缘对齐。但这不起作用。这是我用于此的布局。

        <RelativeLayout
            android:layout_width="fill_parent" android:layout_height="fill_parent" >
            <!-- This is a hack to have all three textviews in a row to obtain equal width -->
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >
                <TextView android:id="@+id/tv_ref1"
                    android:layout_width="0dp" android:layout_height="wrap_content"
                    android:text="My"
                    android:layout_weight="1.0"
                    android:gravity="center" />
                <TextView android:id="@+id/tv_ref2"
                    android:layout_width="0dp" android:layout_height="wrap_content"
                    android:text="My"
                    android:layout_weight="1.0"
                    android:gravity="center" />
                <TextView android:id="@+id/tv_ref3"
                    android:layout_width="0dp" android:layout_height="wrap_content"
                    android:text="My ghghhfghjjghjkkhgfhfghfjhjh"
                    android:layout_weight="1.0"
                    android:gravity="center" />
            </LinearLayout>


            <TextView
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:layout_below="@id/tv_ref1"
                android:gravity="center"
                android:text="Text Text Text"
                android:textColor="@color/white" />
            <TextView
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:layout_below="@id/tv_ref1"
                android:gravity="center_horizontal"
                android:text="Med"
                android:textColor="@color/white" />
            <TextView
                android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:layout_below="@id/tv_ref1"
                android:gravity="center"
                android:text="Long Text wtwy yu hjsyi"
                android:textColor="@color/white" />

        </RelativeLayout>

请让我知道我可能做错了什么,或者如何强制我的文字视图连续排列宽度相同。

谢谢。

4 个答案:

答案 0 :(得分:24)

将所有TextEdits的layout_width设置为“fill_parent”并将layout_weight设置为“1”会强制它们具有相等的宽度

答案 1 :(得分:0)

为什么不使用属性的max width属性。为所有文本视图设置相同意味着20或30dip

答案 2 :(得分:0)

首先使用:

xmlns:android="http://schemas.android.com/apk/res/android"

对于根布局然后检查并修改上面的代码,因为在关闭LinearLayout之后重复textView,这是我认为不必要的。

答案 3 :(得分:0)

获取所有textviews中的最大宽度,并将该宽度设置为所有textviews

 @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            // TODO Auto-generated method stub
            super.onWindowFocusChanged(hasFocus);
            // System.out.println("...111Height..."+mainLayout.getMeasuredHeight());

            width1 = textView1.getWidth();
    width2 = textView2.getWidth();
    width3 = textView3.getWidth();


    //get maximum width among all width
     int[] nums={width1 ,width2 ,width3};  
     Arrays.sort(nums);  
    int max =   nums[nums.length-1];

    //set this maximum value to all the textviews

    textView1.setWidth(max);
    textView2.setWidth(max);
    textView3.setWidth(max);

    }