贴出我的main.xml:
<?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:id="@+id/laymain"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent" android:id="@+id/id_hello"
android:layout_height="wrap_content" android:text="@string/hello" />
</LinearLayout>
然后我想在水平坐标居中, 纵坐标为手机屏幕 3 /5 的位置显示这个LinearLayout里的TextView, 有什么比较
简单的方法呢?
做过网页的朋友一定很想利用MarginLeft, MarginTop属性了, 没错! 获取TextView的MarginLayoutParams是关键!
贴出代码:
package com.dengsi.android;
import android.app.Activity;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.Display;
import android.view.ViewGroup;
import android.view.ViewGroup.MarginLayoutParams;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;
public class fixposition extends Activity {
private LinearLayout laymain = null;
private TextView textview_ = null;
int sWidth_ = 0;
int sHeight = 0;
Paint fontPaint_ = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textview_ = (TextView) findViewById(R.id.id_hello);
laymain = (LinearLayout)findViewById(R.id.laymain);
TextView spaceTV = new TextView(this);
fontPaint_ = new Paint();
Display disp_ = this.getWindowManager().getDefaultDisplay();
sWidth_ = disp_.getWidth();
sHeight = disp_.getHeight();
// TODO Auto-generated method stub
int toY = (sHeight * 3) / 5;
int toX = (sWidth_ - (int) fontPaint_.measureText(textview_.getText()
.toString())) >> 1;
System.out.println("x = " + toX + ", y = " + toY);
laymain.addView(spaceTV, 0);
spaceTV.setLayoutParams(new LinearLayout.LayoutParams(0, toY));
ViewGroup.MarginLayoutParams mlp = (MarginLayoutParams) textview_.getLayoutParams();
mlp.leftMargin = toX;
textview_.setLayoutParams(mlp);
textview_.requestLayout();
textview_.invalidate();
laymain.invalidate();
}
}
模拟器显示效果如图(然后可以把这个放在欢迎画面, 继续做滚动字幕等扩展, 我这里没有用onDraw方法):