Android 更改线性布局内部视图的位置
我使用下面的布局Android 更改线性布局内部视图的位置,android,Android,我使用下面的布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/lnrLayout_cVideo_LB" android:layout_width="fill_parent" android:layout_height="f
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/lnrLayout_cVideo_LB"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/relative_cVideo_LB"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight=".15" >
<VideoView
android:id="@+id/cVideo_LB"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:tag="2" />
</RelativeLayout>
<TextView
android:id="@+id/txtVw_cVideo_LB"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight=".85"
android:background="#FFFFFF"
android:gravity="center"
android:text=""/>
</LinearLayout>
但它并没有改变自己的立场。我探索了这个解决方案,我发现我可以通过View.removeView()
和View.addView()
方法来实现。但出于应用目的,我不能使用这些方法。有人建议我另一种方法吗
请不要建议我使用View.removeView()和View.addView()方法您可以将
相对视图的可见性设置为消失
,它应该消失,文本视图向上移动,就像下面的方法一样(当标志\u video==0
文本视图向上移动时):
希望有帮助 您有两个问题:
您使用的是onTouch(视图v)
方法,而不是onTouch(视图v,运动事件)
方法onTouch()
方法应该有两个参数。2.onTouch()
的返回类型应该是boolean
类型,但您使用的是void
另一个问题是在else
条件下将LayoutParams
设置为lb
,而不是textview
现在,用您的代码片段替换下面的侦听器代码片段……我认为,您会得到正确的结果
video.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (flag_video == 0) {
textview.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, (float) .85));
relative_LB.setLayoutParams(new LayoutParams(
android.widget.RelativeLayout.LayoutParams.MATCH_PARENT,
android.widget.RelativeLayout.LayoutParams.MATCH_PARENT, (float) .15));
flag_video = 1;
v.invalidate();
} else {
relative_LB.setLayoutParams(new LayoutParams(
android.widget.RelativeLayout.LayoutParams.MATCH_PARENT,
android.widget.RelativeLayout.LayoutParams.MATCH_PARENT, (float) .85));
textview.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, (float) .15));
flag_video = 0;
v.invalidate();
}
return true;
}
});
您希望文本视图位于lnrLayout_cVideo_LB的顶部吗?您所说的“文本视图的大小应位于顶部”是什么意思?什么“尺寸”?@giacomoni:是的。。。Exactly@JoelFernandes:类型错误。。。如果我使用此方法relative_LB.setVisibility(RelativeLayout.GONE),我会重新更正代码>视频视图所取得的进展将消失,并将从头开始。所以我现在不能用这种方式,我已经在我的项目中执行了…它正在工作。更换整个侦听器
。
video.setOnTouchListener(new OnTouchListener() {
@Override
public void onTouch(View v) {
// TODO Auto-generated method stub
if(flag_video==0)
{
//textview should go upside
relative_LB.setVisibility(RelativeLayout.GONE);
flag_video=1;
}
else
{
relative_LB.setVisibility(RelativeLayout.VISIBLE);
flag_video=0;
}
}
});
video.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (flag_video == 0) {
textview.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, (float) .85));
relative_LB.setLayoutParams(new LayoutParams(
android.widget.RelativeLayout.LayoutParams.MATCH_PARENT,
android.widget.RelativeLayout.LayoutParams.MATCH_PARENT, (float) .15));
flag_video = 1;
v.invalidate();
} else {
relative_LB.setLayoutParams(new LayoutParams(
android.widget.RelativeLayout.LayoutParams.MATCH_PARENT,
android.widget.RelativeLayout.LayoutParams.MATCH_PARENT, (float) .85));
textview.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT, (float) .15));
flag_video = 0;
v.invalidate();
}
return true;
}
});