单击切换按钮将显示菜单,并向右滑动内容视图。动画结束后,内容视图的布局参数将更新到最终位置。
更新内容视图的最终位置时,该语句mViewContent.setLayoutParams(params);
导致崩溃。错误消息是java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
Main.java> public class MainActivity extends Activity {}
public void onToggleButtonMenuClicked(View view) {
// Is the toggle on?
boolean toggleTurnedOn = ((ToggleButton) view).isChecked();
if (toggleTurnedOn) { // If the toggle is turned on
// Show menu
LinearLayout mViewMenu = (LinearLayout) findViewById(R.id.linear_layout_menu);
Animation animMenuOn = AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim_menu_on);
mViewMenu.startAnimation(animMenuOn);
LinearLayout mViewContent = (LinearLayout) findViewById(R.id.linear_layout_content);
Animation animContentOff = AnimationUtils.loadAnimation(MainActivity.this, R.anim.anim_content_off);
mViewContent.startAnimation(animContentOff);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(480, 800);
params.leftMargin = 384; // Shift 384 pixels from left screen border
params.rightMargin = -96; // Exceed 96 pixels from right screen border
mViewContent.setLayoutParams(params); // This statement causes crash!
} else {
// Hide menu...
} // End of toggle events handling
} // End of onToggleButtonMenuClicked()
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="329dp"
android:layout_height="wrap_content" >
<!-- The Menu View -->
<LinearLayout
android:id="@+id/linear_layout_menu"
android:layout_width="263dp"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/table_row_1_search_bar"
android:layout_width="match_parent"
android:layout_height="40dp"
android:weightSum="10"
android:orientation="horizontal" >
<EditText
android:id="@+id/edit_text_search_id"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="7"
android:hint="@string/edit_text_search_id"
android:textSize="14sp" />
<Button
android:id="@+id/button_search_id"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="3"
android:text="@string/button_search_id" />
</LinearLayout>
<!-- Other rows in the menu are omitted -->
</LinearLayout> <!-- End of Menu -->
<!-- The Content View -->
<LinearLayout
android:id="@+id/linear_layout_content"
android:layout_width="329dp"
android:layout_height="match_parent"
android:orientation="vertical" >
<ToggleButton
android:id="@+id/toggle_button_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onToggleButtonMenuClicked" />
<TextView
android:id="@+id/text_content"
android:layout_width="480dp"
android:layout_height="wrap_content"
android:text="@string/text_content" />
</LinearLayout> <!-- End of Content -->
</FrameLayout> <!-- End of the root linear layout -->
mViewContent
PARAMS应该RESP添加到您的父视图,假设你有作为父视图LinearLayout
然后,LinearLayout.LayoutParams
必须使用。
说明 :
举个例子,LinearLayout.LayoutParams
并且RelativeLayout.LayoutParams
,它们是不同的独立的类。他们存储有关子视图的不同其他信息。
LinearLayout.LayoutParams
可以将权重值与每个视图相关联,而RelativeLayout.LayoutParams
不能。RelativeLayout.LayoutParams
可以具有值喜欢alightWithParent
,above
,below
与每个视图,而LinearLayout.LayoutParams
不能。尽管代码不会给出编译时错误,因为它们都LayoutParams
具有相同的父类,即ViewGroup.LayoutParams
。因此,始终必须Layout
针对父级布局分配参数。
我正在Android中创建一个带有导航视图的tabLayout。我想将图标设置到选项卡布局的选项卡上。当我使用setIcon函数时,应用程序抛出一个空指针异常并崩溃。请帮帮我. 在android.app.activityThread.-wrap11(activityThread.java)在android.app.activityThread$H.HandleMessage(activityThr
我一直在使用空布局,很多人会说不应该这样做。有更好的办法吗? 以下是一些代码示例:
mydateutils.java:
我有一个布局,每当我按下提交按钮和设置错误的文本输入布局,它将editText变成红色,但我没有设置任何颜色的editText设置错误。基本上,我只想在editText下面给出错误字符串,而不是在设置错误时将editText变成红色。我的片段代码如下, 片段的xml代码如下所示,以线性布局为父级, 编辑文本和输入布局的样式如下所示, 基本上,我只想在editext下面给出错误字符串,而不是在设置错
目前,我正在尝试将FLAG_IMMUTABLE用于待定意图。get活动(对于android 12)。但是,它不起作用(在“挂起的意外”中设置的参数为空)。如果我用FLAG_MUTABLE替换它,它确实有效。 PendingIntent.getService(活动,0,myServiceRequest estIntent,PendingIntent.FLAG_ONE_SHOT或PendingInte
我试图创建一个假想的车辆,有自动和手动模式的用户界面。当用户将车辆设置为其中一种模式时,它应该只显示与该模式相关的控件,我已经使用CardLayout完成了这一点。 然而,我也希望能够为每张卡片手动指定布局中各种元素的位置——对于静态布局,我会按照,但在CardLayout上使用时,这只会给出一个空白窗口(因此下面代码中有两行注释掉)。 我如何实现这两个目标?我目前的代码如下: