‘壹’ 怎么获取控件在屏幕上的位置android
getLocationOnScreen ,计算该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标
getLocationInWindow ,计算该视图在它所在的widnow的坐标x,y值,//获取在整个窗口内的绝对坐标 (不是很理解= =、)
getLeft , getTop, getBottom, getRight, 这一组是获取相对在它父亲里的坐标
如果在Activity的OnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些。
import android.widget.ImageView;
public class LocationActivity extends Activity {
/** Called when the activity is first created. */
private ImageView t = null;
private Button button = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
t = (ImageView)findViewById(R.id.l);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new buttonListener());
}
public class buttonListener implements OnClickListener{
public void onClick(View v)
{
int[] location = new int[2];
t.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
System.out.println("x:"+x+"y:"+y);
System.out.println("图片各个角Left:"+t.getLeft()+"Right:"+t.getRight()+"Top:"+t.getTop()+"Bottom:"+t.getBottom());
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas、android、com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="button"/>
<ImageView
android:id="@+id/l"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/a" />
</LinearLayout>
‘贰’ android中获得控件的位置(相对于布局文件)
正确的代码如下所示
java">TextViewtv=(TextView)findViewById(R.id.text);
tv.getViewTreeObserver().addOnGlobalLayoutListener(newOnGlobalLayoutListener(){
@Override
publicvoidonGlobalLayout(){
//这里执行获取位置大小操作
intleft=tv.getLeft();
inttop=tv.getTop();
intbottom=tv.getBottom();
intright=tv.getRight();
//tv相对于父布局的坐标就得出来了
}
}
view的位置和大小是通过onLayout和onMeasure方法计算出来的,执行到activity的onCreate()方法时,尚未开始计算控件的大小和位置,所以是取不到的
OnGlobalLayoutListener 是ViewTreeObserver的内部类,当一个视图树的布局发生改变时,可以被ViewTreeObserver监听到,这是一个注册监听视图树的观察者(observer),在视图树的全局事件改变时得到通知
除了OnGlobalLayoutListener ,ViewTreeObserver还有如下内部类:
interfaceViewTreeObserver.OnGlobalFocusChangeListener
当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类
interfaceViewTreeObserver.OnGlobalLayoutListener
当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类
interfaceViewTreeObserver.OnPreDrawListener
当一个视图树将要绘制时,所要调用的回调函数的接口类
interfaceViewTreeObserver.OnScrollChangedListener
当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类
interfaceViewTreeObserver.OnTouchModeChangeListener
当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类
‘叁’ Android studio 中怎样实现控件相对位置定位
ConstraintLayout约束布局了解一下
‘肆’ android动态添加控件,怎样指定位置
首先你得定义一个 LayoutParams:
RelativeLayout.LayoutParams s = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
s.addRule(RelativeLayout.CENTER_IN_PARENT, -1);
//添加位置信息 -1表示相对于父控件的位置 ,如果要相对某个平级控件则参数是该控件的ID
s.setMargins(10, 10, 10, 10);//设置左,上,右,下,的距离
上面的定义好了之后可以用了:
imgApple2.setLayoutParams(s);
insertLayout.addView(imgApple2,100,100);
‘伍’ android 怎么通过代码设置控件位置
你可以通过findViewById()先获得这个控件剩下的就是你去调用这个控件的方法在你的代码里面设置控件的宽高了。
‘陆’ Android开发中在view中怎么指定控件的位置
用LayoutParams: RelativeLayout insertLayout = (RelativeLayout)view1.findViewById(R.id.screen);//screen是一个RelativeLayout 布局的id ImageView imgApple2 = new ImageView(MainActivity.this); imgApple2.setBackgroundColor(Color.pars...
‘柒’ android怎样动态生成布局文件,指定控件显示位置
控件位置发生改变时
用sharedpreferences记录控件位置
第二次进入时读取记录了的内容,动态生成布局
‘捌’ android 怎么在布局里面获取控件
layout为布局,布局里面可以放任何空间,获取空间可以用findViewById方法获取
android 获取某个布局控件 添加到另一个布局中
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout relativeLayout = (LinearLayout) findViewById(R.id.layout456);
ImageView imgApple2 = new ImageView(this);
imgApple2.setImageResource(R.drawable.ic_launcher);
relativeLayout.addView(imgApple2);
LayoutInflater factorys = LayoutInflater.from(MainActivity.this);
final View textEntryView = factorys.inflate(R.layout.layout1, null);
// LinearLayout linearLayout = (LinearLayout) textEntryView
// .findViewById(R.id.layout1);
// relativeLayout.addView(linearLayout);
EditText editText1 = (EditText) textEntryView
.findViewById(R.id.editText1);
relativeLayout.addView(editText1);
‘玖’ android listview 控件在什么位置
android listview,在eclipse或者android studio在代码编辑窗口,输入listview,ctrl+鼠标左键点击,如果导入了源代码,就可以查看具体的代码位置,主要是用来展示一条条的数据的。
‘拾’ android中 4.0版本 控件直接getX()getY()就可以获取到位置,2.1中有什么方法可以获
如果是get的话,android2.2有getLeft() getRight() getBottom() getTop() ,
getLeft()和getBottom()就对应你的GetX和GetY
但Andriod2.2却没有对应的set,如果要set只能使用setLayoutParams