- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在制作一个代码,根据其应用程序提供的屏幕尺寸更改其尺寸。它通过 View 的 onSizeChanged() 和 onDraw() 方法获取整个宽度和高度(或其相应 View 的 w 和 h)。
它在另一个代码中运行良好,但是现在每当我尝试输入命令“setLayoutParams()”时它都会显示一条错误消息您能帮我解决这个问题吗? setLayoutParams() 实际上在代码的任何地方都不起作用。下面是主要的类代码。
public class ManipulateDesign extends Activity { private LinearLayout ll; private ScrollView sv; private TextView tv; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ll = (LinearLayout) findViewById(R.id.ll); sv = (ScrollView) findViewById(R.id.sv); tv = new TextView(this); tv.setText("You're in the first ScrollView\n" + "- Living Universe \n" + "Wish (upon a star) Hope to (be again)\n" + "The one you find, when all is done and through!\n" + "If all, made a wish to save, the star would it be in vain?\n" + "So much it holds, too dear to part, many ways to see the light of answers!\n" + "For all was once, just taken away, that one hope all disappeared so none can break nor brittle my heart\n" + "no, never again, until the end"); sv.addView(tv); ChangeSizeView csv = new ChangeSizeView(getApplicationContext()); ll.addView(csv); } class ChangeSizeView extends View{ int newWidth; int newHeight; public ChangeSizeView(Context context) { super(context); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { newWidth = w; newHeight = h; super.onSizeChanged(w, h, oldw, oldh); } @Override protected void onDraw(Canvas canvas) { // THIS COMMAND MAKES AN ERROR(not just in this method but anywhere in the entire code) BUT WORKED WELL IN ANOTHER CODE sv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, (newHeight - 100))); super.onDraw(canvas); } }}
And this is my main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/ll"
>
<ScrollView android:id="@+id/sv"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</ScrollView>
</LinearLayout>
这是显示错误信息的logcat标志
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): FATAL EXCEPTION: main
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.widget.LinearLayout.measureVertical(LinearLayout.java:355)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.view.View.measure(View.java:8171)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.view.View.measure(View.java:8171)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.view.View.measure(View.java:8171)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.view.View.measure(View.java:8171)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.os.Handler.dispatchMessage(Handler.java:99)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.os.Looper.loop(Looper.java:123)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at java.lang.reflect.Method.invokeNative(Native Method)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at java.lang.reflect.Method.invoke(Method.java:521)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-11 06:39:52.148: ERROR/AndroidRuntime(2952): at dalvik.system.NativeStart.main(Native Method)
最佳答案
你应该完全限定你需要的LayoutParams
,因为它包含在一个LinearLayout
中,你需要使用new LinearLayout.LayoutParams
关于android - setLayoutParams() 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5617492/
当我使用 xml 设置布局参数时,它工作正常。但是当我尝试以编程方式设置布局参数时,它会出错。我哪里失败了? 我需要在我的 LinearLayout 中设置参数,这里是: 这是我设置参数的代码: r
我正在尝试使用方法 setLayoutParams 来指定我的表格布局的图形参数,但我不确定方法 setLayoutParams 是否采用像素值或倾角值,尤其是在 java 中存储的值似乎是像素的,例
我想将 TextView 的高度远程设置为 WRAP_CONTENT。 我该怎么做,因为没有 remoteviews.setLayoutParams(viewId, param) 函数? 我尝试了 r
我正在制作一个代码,根据其应用程序提供的屏幕尺寸更改其尺寸。它通过 View 的 onSizeChanged() 和 onDraw() 方法获取整个宽度和高度(或其相应 View 的 w 和 h)。
我编写了以下代码,首先增加 ImageView 的大小,然后在 100 毫秒后减小同一 ImageView 的大小。然而,这段代码增加了 ImageView 的大小,但并没有减小它的大小,或者延迟 1
我有 LayoutParams 转换与 addRule()。 我的观点改变了位置,但持续时间是瞬间的。 我在 API 15 上工作,所以我不能使用 beginDelayedTransition()。
如何为 LinearLayout 元素设置 setLayoutParams()。在 MainActivity.java 中。我为第 50 行显示的 set Layout params 和 nullPo
我想尝试在 Android 上使用数据库,所以我制作了一个小应用程序,允许您将联系人添加到数据库然后显示它们。 如果我在 XML 中创建布局然后在代码中编辑文本字段,我就能够显示联系人(来自数据库)。
我创建了一个自定义 View - MyImageView - 在其中绘制位图,我使用 setLayoutParams() 设置我的 View 的宽度和高度,但它不起作用,我使用日志来跟踪我的 View
我看到了这种奇怪的行为,想问问是否有人找到了解决方法。我有一个简单的 RelativeLayout,里面有另一个布局。 奇怪的行为发生在代码中。如果我从嵌套布局中获取 LayoutParams 并将其
-更新- 我已按照 Agarwal 的建议进行操作,但现在出现此错误: 04-21 11:42:01.807: E/AndroidRuntime(1456): java.lang.ClassCastE
我想在实例化之前设置我的 Bitmap 的布局大小,以便它可以被实例化(如果没有,它的布局高度和宽度 = 0)。 我在我的自定义 View 中使用这个简单的代码: @Override protecte
我想将布局参数添加到我的 TextView。 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout
故事 我有 2 个 TextView ,一个在另一个之上: XXXXXXXXXXXX[TextView1] XXXXXXXXXXXX[TextView2] 两个 TextView 都右对齐。 (因此是
例如,如果你想将某些 View 的 LayoutParams 更改为 WRAP_CONTENT,同时 width 和 height以编程方式,它看起来像这样: final ViewGroup.Lay
我想在用户从 ListView 中选择选项时显示 float 按钮。在选中的项目上要显示 float 按钮,否则应隐藏 float 按钮。这是我使用的代码 FloatingActionButton f
我正在尝试使用 FrameLayout 将一个 View 放在表格中另一个 View 的上方(每行 2 个框架布局),但我需要向其添加一些参数(边距、宽度和高度)。问题是向其中添加参数会阻止其显示。例
是否可以设置 mWebView = (WebView) findViewById(R.id.webviewHelp); mWebView.setLayoutParams(new Vie
我过去曾这样做过,但我很沮丧,因为这种方法并不像我预期的那样有效。我有一张图片,我想将其调整为特定尺寸,我正在使用以下代码: snellen.post(new Runnable() {
使用 setLayoutParams 和向 addView 提供参数有什么区别? 我知道 addView 仅在第一次添加 View 时有效。我发现了两种显然可以做同样事情的方法: tv.setLayo
我是一名优秀的程序员,十分优秀!