【发布时间】:2014-11-02 23:31:39
【问题描述】:
尝试组合 textview 元素来显示/隐藏文本中的剧透。 问题是如果我添加代码以最初隐藏带有文本的视图,应用程序在启动后会崩溃。尝试了 setHeight 和 LayoutProperties,都导致应用程序崩溃或以某种方式覆盖 OnClickListener 事件并阻止尝试调整 TextView 的高度。
这是代码。
String sample;
boolean SpoilerOpen;
int TextHeight;
TextView Sample;
String spoilertext;
TextView SpoilerContainer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout scroll = new LinearLayout (this);
scroll.setOrientation(1);
spoilertext="hidden txt";
final String Spoiler_close="show";
final String Spoiler_open="hide";
SpoilerContainer=new TextView (this);
SpoilerContainer.setText(Spoiler_close);
SpoilerContainer.setClickable(true);
SpoilerOpen=false;
Sample=new TextView(this);
Sample.setText(spoilertext);
// --part causing problems--
ViewGroup.LayoutParams params = Sample.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
Sample.setLayoutParams(params);
// --end of part--
SpoilerContainer.setOnClickListener(new View.OnClickListener() {
public void onClick (View V)
{
if (SpoilerOpen==false)
{
SpoilerOpen=true;
SpoilerContainer.setText(Spoiler_open);
ViewGroup.LayoutParams params = Sample.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
Sample.setLayoutParams(params);
}
else
{
SpoilerOpen=false;
SpoilerContainer.setText(Spoiler_close);
ViewGroup.LayoutParams params = Sample.getLayoutParams();
params.height = 0;
Sample.setLayoutParams(params);
}
}
});
scroll.addView(SpoilerContainer);
scroll.addView(Sample);
setContentView(scroll);
}
发现一个类似的问题已解决 here 但在我的情况下 TextView 的父级是 LinearLayout 并且使用它的 LayoutParams 没有帮助,或者我使用不正确。 希望我已经提供了足够的信息来找到解决方案。
这是来自 Eclipse 的日志。
09-09 15:44:27.288: D/AndroidRuntime(568): Shutting down VM
09-09 15:44:27.307: W/dalvikvm(568): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
09-09 15:44:27.347: E/AndroidRuntime(568): FATAL EXCEPTION: main
09-09 15:44:27.347: E/AndroidRuntime(568): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.project/com.project.MainActivity}: java.lang.NullPointerException
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread.access$600(ActivityThread.java:122)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.os.Handler.dispatchMessage(Handler.java:99)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.os.Looper.loop(Looper.java:137)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread.main(ActivityThread.java:4340)
09-09 15:44:27.347: E/AndroidRuntime(568): at java.lang.reflect.Method.invokeNative(Native Method)
09-09 15:44:27.347: E/AndroidRuntime(568): at java.lang.reflect.Method.invoke(Method.java:511)
09-09 15:44:27.347: E/AndroidRuntime(568): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-09 15:44:27.347: E/AndroidRuntime(568): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-09 15:44:27.347: E/AndroidRuntime(568): at dalvik.system.NativeStart.main(Native Method)
09-09 15:44:27.347: E/AndroidRuntime(568): Caused by: java.lang.NullPointerException
09-09 15:44:27.347: E/AndroidRuntime(568): at com.project.MainActivity.onCreate(MainActivity.java:42)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.Activity.performCreate(Activity.java:4465)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
09-09 15:44:27.347: E/AndroidRuntime(568): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
09-09 15:44:27.347: E/AndroidRuntime(568): ... 11 more
09-09 15:46:02.108: I/Process(568): Sending signal. PID: 568 SIG: 9
【问题讨论】:
-
你也可以分享你的logcat吗
-
已添加日志,希望对您有所帮助。
-
请检查我新编辑的答案
标签: android textview layoutparams