gpt4 book ai didi

android - Android 上的自定义 View 和 XML

转载 作者:行者123 更新时间:2023-11-29 21:20:09 24 4
gpt4 key购买 nike

这是我在这个论坛上的第一个问题。我尝试使用 setContentView (R.layout.main) 来显示 ImageView 和自定义 View 。有人可以帮忙吗?我整个周末都在努力....

代码 MainActivity

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_screen_image);
}
}

编辑自定义 View 的代码以包含 onSizeChanged() 方法

public class TitleView extends View {

/**variables declared here*/

public TitleView (Context context, AttributeSet attrs) {
super (context, attrs);
}
@Override
public void onSizeChanged (int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
screenW = w;
screenH = h;
scaledButtonH = (int)(screenH/8);
scaledButtonW = (int)(screenH*ButtonStart.getWidth()/ButtonStart.getHeight());
scaledButtonStart = Bitmap.createScaledBitmap(ButtonStart, scaledButtonW, scaledButtonH, false);
}

@Override
protected void onDraw (Canvas canvas) {
canvas.drawBitmap (scaledButtonStart, (int)(screenW-scaledButtonW)/2, (int)(screenH*0.7), null);
@Override
}
}

XML main_screen_image.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainScreenLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ImageView
android:id="@+id/mainScreenImage"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerCrop"
android:src="@drawable/screenimage"
>
</ImageView>

<View class="com.tomroom.carpark.TitleView"
android:id="@+id/titleview">
</View>

</LinearLayout>

堆栈跟踪

12-29 21:50:35.860: E/AndroidRuntime(1388): FATAL EXCEPTION: main
12-29 21:50:35.860: E/AndroidRuntime(1388): java.lang.NullPointerException
12-29 21:50:35.860: E/AndroidRuntime(1388): at com.lowbband.chimera.TitleView.onSizeChanged(TitleView.java:41)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.View.setFrame(View.java:9410)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.View.layout(View.java:9324)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.widget.LinearLayout.onLayout(LinearLayout.java:1314)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.View.layout(View.java:9330)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.ViewGroup.layout(ViewGroup.java:3795)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.widget.FrameLayout.onLayout(FrameLayout.java:400)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.View.layout(View.java:9330)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.ViewGroup.layout(ViewGroup.java:3795)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.widget.LinearLayout.onLayout(LinearLayout.java:1314)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.View.layout(View.java:9330)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.ViewGroup.layout(ViewGroup.java:3795)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.widget.FrameLayout.onLayout(FrameLayout.java:400)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.View.layout(View.java:9330)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.ViewGroup.layout(ViewGroup.java:3795)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.ViewRoot.performTraversals(ViewRoot.java:1201)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.view.ViewRoot.handleMessage(ViewRoot.java:1944)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.os.Handler.dispatchMessage(Handler.java:99)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.os.Looper.loop(Looper.java:126)
12-29 21:50:35.860: E/AndroidRuntime(1388): at android.app.ActivityThread.main(ActivityThread.java:3997)
12-29 21:50:35.860: E/AndroidRuntime(1388): at java.lang.reflect.Method.invokeNative(Native Method)
12-29 21:50:35.860: E/AndroidRuntime(1388): at java.lang.reflect.Method.invoke(Method.java:491)
12-29 21:50:35.860: E/AndroidRuntime(1388): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:841)
12-29 21:50:35.860: E/AndroidRuntime(1388): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
12-29 21:50:35.860: E/AndroidRuntime(1388): at dalvik.system.NativeStart.main(Native Method)

最佳答案

这样改变你的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainScreenLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<ImageView
android:id="@+id/mainScreenImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:src="@drawable/screenimage" />

<com.tomroom.carpark.TitleView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/titleview"/>

</LinearLayout>

关于android - Android 上的自定义 View 和 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20825588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com