我正在尝试对齐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);
}
这就是结果: -
答案 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);