gpt4 book ai didi

android - 如何向 Activity 添加自定义 View ?

转载 作者:行者123 更新时间:2023-11-29 18:25:55 25 4
gpt4 key购买 nike

我知道这个问题已经被问过很多次了,但不知何故,我无法通过阅读现有的答案来找到解决方案。

最简单的,我想在一个activity中添加一个自定义 View 。自定义 View MyView 及其 subView 具有背景色。但 Activity 只是纯白色,似乎没有显示自定义 View 。

这是为什么?

主要 Activity .java

public class MainActivity extends AppCompatActivity {

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

MyView myView = findViewById(R.id.myView);
}
}

main_activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<com.myapp.MyView
android:id="@+id/myView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />

</RelativeLayout>

我的 View .java

public class MyView extends LinearLayout {

public MyView(Context context) {
super(context);
init(context);
}

public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}

public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}

private void init(Context context) {

inflate(context, R.layout.my_view, this);
subView = findViewById(R.id.subView);
//...
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
}
}

我的 View .xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#ff00ff"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<ImageView
android:id="@+id/subView"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="#ff00ff"
tools:ignore="ContentDescription" />

</LinearLayout>

最佳答案

如果您不跳过代码段中的 onLayout 实现,那么您将删除自定义 View 的布局逻辑,只是不要覆盖它:

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
}

关于android - 如何向 Activity 添加自定义 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59057334/

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