Java 我在尝试更改视图时不断出错';带LayoutParams的s标注
我的活动设置如下:Java 我在尝试更改视图时不断出错';带LayoutParams的s标注,java,android,Java,Android,我的活动设置如下: <RelativeLayout> <Button> <LinearLayout> <RelativeLayout> <LinearLayout> <--- THIS IS WHAT I WANT TO CHANGE <RelativeLayout> </LinearLayout> </Relativ
<RelativeLayout>
<Button>
<LinearLayout>
<RelativeLayout>
<LinearLayout> <--- THIS IS WHAT I WANT TO CHANGE
<RelativeLayout>
</LinearLayout>
</RelativeLayout>
更新:
这里是有问题的XML文件,我感兴趣的是更改graph1 graph2 graph3和graph4
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#16467A"
android:padding="10dp" >
<Button
android:id="@+id/btn_ok"
android:layout_width="205dp"
android:layout_height="40dp"
android:layout_below="@+id/liniar"
android:layout_marginTop="10dp"
android:background="@drawable/kvadrat"
android:clickable="true"
android:text="ОК"
android:textColor="#FFFFFF"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/liniar"
android:layout_width="205dp"
android:layout_height="190dp"
android:layout_alignLeft="@+id/btn_ok"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="false"
android:background="@drawable/kvadrat"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="204dp"
android:layout_height="140dp"
android:layout_gravity="top"
android:layout_marginTop="10dp" >
<LinearLayout
android:id="@+id/graph1"
android:layout_width="30dp"
android:layout_height="120dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="false"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:background="#00a313"/>
<LinearLayout
android:id="@+id/graph2"
android:layout_width="30dp"
android:layout_height="140dp"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@+id/graph1"
android:background="#00a313"/>
<LinearLayout
android:id="@+id/graph3"
android:layout_width="30dp"
android:layout_height="80dp"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@+id/graph2"
android:background="#00a313"/>
<LinearLayout
android:id="@+id/graph4"
android:layout_width="30dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@+id/graph3"
android:background="#00a313"/>
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="29dp"
android:text="A"
android:textColor="#DCA601"
android:textSize="20dp"
android:textStyle="bold"
android:typeface="normal" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="31dp"
android:text="B"
android:textColor="#DCA601"
android:textSize="20dp"
android:textStyle="bold"
android:typeface="normal" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="32dp"
android:text="C"
android:textColor="#DCA601"
android:textSize="20dp"
android:textStyle="bold"
android:typeface="normal" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="32dp"
android:text="D"
android:textColor="#DCA601"
android:textSize="20dp"
android:textStyle="bold"
android:typeface="normal" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
使用LogCat检查与错误相关的Java堆栈跟踪。如果无法解释堆栈跟踪告诉您的内容,请在提问时粘贴堆栈跟踪 但是,您的问题似乎是您正试图为
RelativeLayout
的子级使用LinearLayout.LayoutParams
,因此我猜您得到的是ClassCastException
LayoutParams
的特定风格由视图的父级决定,而不是由视图本身决定
BTW,您可以考虑调用<代码> GeLayOutPARAMSH()/代码>,调整现有实例,并通过<代码> SETLAOUT PARAMSH()/<代码>更新它,而不是创建一个新实例。特别是通过巧妙地使用基类(例如,
ViewGroup.LayoutParams
,LinearLayout.LayoutParams
和RelativeLayout.LayoutParams
),您可以更好地将自己与父级的特定类隔离开来。您需要使用父级的LayoutParams,所以你需要使用RelativeLayout.LayoutParams,因为线性布局是在相对布局中。是的,我尝试了很多东西,包括你说的,但都不起作用。。。这行代码正是您建议的,但它仍然给我错误:RelativeLayout.LayoutParams=(RelativeLayout.LayoutParams)g1.getLayoutParams();参数高度=30;g1.setLayoutParams(参数)
@DavidSimka:在不知道错误是什么的情况下(例如,通过编辑问题以获得当前代码和堆栈跟踪),任何人都很难帮助您。@DavidSimka:是的,尽管只需在LogCat中突出显示行通常比较简单,按-
,然后将它们粘贴到问题中(格式为源代码)。您的错误与问题中的代码无关--您在MainActivity.java
的第52行有一个NullPointerException
,在onClick()
方法中。它实际上是第525行,即:g1.setLayoutParams(新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_内容,RelativeLayout.LayoutParams.WRAP_内容))是的,这是我一直试图添加的LayoutParams代码行中的空指针异常…@DavidSimka:很抱歉误读了行号。然后,g1
是null
。要么ID不是graph1
,要么您的代码和资源在构建过程中稍微不同步(从Eclipse主菜单中执行Project>Clean以修复此问题),或者您尚未将graph1
加载到活动的内容中。是的,当我执行此操作时,仍然会出现错误:g1.setLayoutParams(新的RelativeLayout.LayoutParams(LayoutParams.WRAP_content,LayoutParams.WRAP_content));尝试RelativeLayout.LayoutParams.WRAP_内容也可以添加logcat堆栈跟踪,并且您的实际layout.xml文件.g1为空,您可能尚未查找该文件,或者无法在您扩展的布局中找到视图。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#16467A"
android:padding="10dp" >
<Button
android:id="@+id/btn_ok"
android:layout_width="205dp"
android:layout_height="40dp"
android:layout_below="@+id/liniar"
android:layout_marginTop="10dp"
android:background="@drawable/kvadrat"
android:clickable="true"
android:text="ОК"
android:textColor="#FFFFFF"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/liniar"
android:layout_width="205dp"
android:layout_height="190dp"
android:layout_alignLeft="@+id/btn_ok"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="false"
android:background="@drawable/kvadrat"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="204dp"
android:layout_height="140dp"
android:layout_gravity="top"
android:layout_marginTop="10dp" >
<LinearLayout
android:id="@+id/graph1"
android:layout_width="30dp"
android:layout_height="120dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="false"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:background="#00a313"/>
<LinearLayout
android:id="@+id/graph2"
android:layout_width="30dp"
android:layout_height="140dp"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@+id/graph1"
android:background="#00a313"/>
<LinearLayout
android:id="@+id/graph3"
android:layout_width="30dp"
android:layout_height="80dp"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@+id/graph2"
android:background="#00a313"/>
<LinearLayout
android:id="@+id/graph4"
android:layout_width="30dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="15dp"
android:layout_toRightOf="@+id/graph3"
android:background="#00a313"/>
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="29dp"
android:text="A"
android:textColor="#DCA601"
android:textSize="20dp"
android:textStyle="bold"
android:typeface="normal" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="31dp"
android:text="B"
android:textColor="#DCA601"
android:textSize="20dp"
android:textStyle="bold"
android:typeface="normal" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="32dp"
android:text="C"
android:textColor="#DCA601"
android:textSize="20dp"
android:textStyle="bold"
android:typeface="normal" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="32dp"
android:text="D"
android:textColor="#DCA601"
android:textSize="20dp"
android:textStyle="bold"
android:typeface="normal" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>