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;
            }
    
        });