Android中布局之定位Widget 控件的好方法(margin)

贴出我的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方法):


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值