将Android TextView与不同的行号对齐

时间:2013-03-07 15:02:03

标签: android textview alignment

我正在尝试对齐n个文本视图,其中可以存在垂直和水平居中的不同数量的行,并且具有更多行的文本视图“下降”,即使它们具有固定的大小和中心对齐。是否可以通过代码对齐它们?

这是我的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="one line"
        android:textSize="48dp"
        tools:context=".MainActivity" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="two lines"
        android:textSize="48dp" />

</LinearLayout>

这是我的java类:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView oneline=(TextView) findViewById(R.id.textView1);
        TextView twolines=(TextView) findViewById(R.id.textView2);
        twolines.setText("two lines \n two lines");
        oneline.setHeight(200);
        twolines.setHeight(200);
        oneline.setWidth(400);
        twolines.setWidth(400);
        oneline.setBackgroundColor(Color.YELLOW);
        twolines.setBackgroundColor(Color.YELLOW);
        oneline.setGravity(Gravity.CENTER);
        twolines.setGravity(Gravity.CENTER);     
    }

这就是结果: - skew

1 个答案:

答案 0 :(得分:2)

我不知道为什么会发生这种情况但是,当您将布局更改为相对时,问题就会消失。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@android:color/darker_gray"
        android:gravity="center"
        android:text="one line"
        android:textSize="20sp"
        tools:context=".MainActivity" />


    <TextView
        android:layout_toRightOf="@id/textView1"
        android:id="@+id/textView2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_gravity="top"
        android:background="@color/abs__holo_blue_light"
        android:gravity="center"
        android:text="two lines
two lines"
android:layout_gravity="center"
        android:textSize="20sp"
         />

</RelativeLayout>

修改 实际上这只是baseline_alignment问题。 这是基于代码的解决方案。

        TextView oneline=(TextView) findViewById(R.id.textView1);
        TextView twolines=(TextView) findViewById(R.id.textView2);
        twolines.setText("two lines \n ywo lines");
        oneline.setHeight(200);
        twolines.setHeight(200);
        oneline.setWidth(400);
        twolines.setWidth(400);
        oneline.setBackgroundColor(Color.YELLOW);
        twolines.setBackgroundColor(Color.RED);


        oneline.setGravity(Gravity.CENTER);
        twolines.setGravity(Gravity.CENTER);

        ViewParent v = ((View) oneline).getParent();
        ((LinearLayout) v).setBaselineAligned(false);