添加一个按钮来查看

2023-12-10

我正在绘制一个图表,然后为输入数据添加一些按钮/标签/文本框。但主布局上的按钮没有显示。如何向视图添加按钮(因为我在视图上使用画布绘制图形)

这是绘制画布类

public class DrawCross extends View {
    Paint   paint   = new Paint();

    public DrawCross(Context context) {
        super(context);
        paint.setColor(Color.BLACK);
        Button btn = new Button(context);
    }

    @Override
    public void onDraw(Canvas canvas){
        canvas.drawLine(250, 450, 250, 20, paint);
        canvas.drawLine(245, 25, 250, 20, paint);
        canvas.drawLine(250, 20, 255, 25, paint);

        canvas.drawLine(20, 300, 400, 300, paint);
        canvas.drawLine(395, 295, 400, 300, paint);
        canvas.drawLine(400, 300, 395, 305, paint); 
    }
}

这是主课

public class MainActivity extends Activity {
    DrawCross   drawView;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        drawView = new DrawCross(this);
        setContentView(drawView);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

Fixed:

画十字类:

public class DrawCross extends View {
    Paint   paint   = new Paint();

    public DrawCross(Context context) {
        super(context);
    }

    @Override
    public void onDraw(Canvas canvas){
        canvas.drawLine(250, 450, 250, 20, paint);
        canvas.drawLine(245, 25, 250, 20, paint);
        canvas.drawLine(250, 20, 255, 25, paint);
        canvas.drawLine(20, 300, 400, 300, paint);
        canvas.drawLine(395, 295, 400, 300, paint);
        canvas.drawLine(400, 300, 395, 305, paint);
    }
}

主要类别:

public class MainActivity extends Activity {
    DrawCross   drawView;

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

活动主布局:

<LinearLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="a" />

        <EditText
            android:layout_width="20dp"
            android:layout_height="wrap_content" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="draw" />

    </LinearLayout>
    <com.example.khibong.DrawCross
        android:id="@+id/myView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.khibong"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.khibong.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

和日志猫:

05-12 12:56:16.831: E/Trace(1715): error opening trace file: No such file or directory (2)
05-12 12:56:16.841: D/AndroidRuntime(1715): Shutting down VM
05-12 12:56:16.841: W/dalvikvm(1715): threadid=1: thread exiting with uncaught exception (group=0xb3e28288)
05-12 12:56:16.841: E/AndroidRuntime(1715): FATAL EXCEPTION: main
05-12 12:56:16.841: E/AndroidRuntime(1715): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.khibong/com.example.khibong.MainActivity}: android.view.InflateException: Binary XML file line #31: Error inflating class com.example.khibong.DrawCross
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.os.Looper.loop(Looper.java:137)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.app.ActivityThread.main(ActivityThread.java:4745)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at java.lang.reflect.Method.invokeNative(Native Method)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at java.lang.reflect.Method.invoke(Method.java:511)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at dalvik.system.NativeStart.main(Native Method)
05-12 12:56:16.841: E/AndroidRuntime(1715): Caused by: android.view.InflateException: Binary XML file line #31: Error inflating class com.example.khibong.DrawCross
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.view.LayoutInflater.createView(LayoutInflater.java:596)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.app.Activity.setContentView(Activity.java:1867)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at com.example.khibong.MainActivity.onCreate(MainActivity.java:18)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.app.Activity.performCreate(Activity.java:5008)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
05-12 12:56:16.841: E/AndroidRuntime(1715):     ... 11 more
05-12 12:56:16.841: E/AndroidRuntime(1715): Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet]
05-12 12:56:16.841: E/AndroidRuntime(1715):     at java.lang.Class.getConstructorOrMethod(Class.java:460)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at java.lang.Class.getConstructor(Class.java:431)
05-12 12:56:16.841: E/AndroidRuntime(1715):     at android.view.LayoutInflater.createView(LayoutInflater.java:561)
05-12 12:56:16.841: E/AndroidRuntime(1715):     ... 22 more

enter image description here


我尝试了你之前的 DrawCross,它可以满足你的要求,但它有点难看。你必须设置基线才能使它看起来漂亮

public class MainActivity extends Activity {
DrawCross   drawView;

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

    DrawCross drawCross = new DrawCross(this);
    LinearLayout layout1 = (LinearLayout) findViewById(R.id.drawcross);
    layout1.addView(drawCross);
}

@Override
public boolean onCreateOptionsMenu(Menu menu){
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
}

XML

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

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textview1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="label1" />

        <EditText 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@id/textview1" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Draw" />

    </LinearLayout>

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="label2" />

        <EditText 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal" >

        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="label3" />

        <EditText 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>

    <LinearLayout 
        android:id="@+id/drawcross"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="7"
        android:orientation="horizontal" >

    </LinearLayout>

</LinearLayout>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加一个按钮来查看 的相关文章

  • 如何在Android上获取当前播放曲目的路径[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想编写一个应用程序将当前播放的音乐流式传输到另一台设备 两个设备之间的连接确实有效 我还可以通过 wifi 传输一些字符串 但在获取
  • 如何通过代码检测Android上的表情符号支持

    通过代码 我可以制作一个按钮 将这 3 个表情符号插入到文本中 不过 在许多手机上 当用户单击按钮时 问题是 显示为 X X X 或者更糟糕的是 它只显示三个空白空间 我想在无法正确显示表情符号的 Android 设备上禁用并隐藏我自己的内
  • 服务如何在后台运行 - Android

    今天的采访中我被问到了这个问题 什么是服务 我对此的回答是 Service 是 Android 的基本组件 它没有 UI 并且在后台运行 Service 是否在主线程上运行 不 那么它是如何在后台运行的呢 我心里一片空白 有人可以解释一下如
  • 配置项目 ':react-native-gesture-handler' 时出现问题

    大家好 我已经尝试了很长时间来解决这个问题 但不幸的是我还没有弄清楚如何解决 希望你们能帮助我 所以我有一个反应本机项目和我的朋友 以及我的一位朋友添加 React native gesture handler 包供我们使用 他对这个包没有
  • 如何连接到Google Play服务并加载排行榜

    我想将我的游戏与 Google Play 服务连接 我已阅读有关 Android 开发人员的文档 并尝试遵循输入数字示例 但仍然无法加载排行榜 我有导入baseGameUtils 但我使用andengine 所以我没有使用来自谷歌的exte
  • 新安装的Eclipse和Android SDK。无法让模拟器工作。挂在时钟屏幕上

    我对开发是全新的 我已经安装了 Eclipse 和 Andoid SDK 但是 我无法让模拟器工作 我已经尝试过示例记事本代码和 Hello Android 教程代码 每次我尝试运行任一应用程序时 它都会挂在时钟屏幕上 屏幕上还显示正在充电
  • 使用 RoboSpice 有没有办法从异常中获取 HTTP 错误代码?

    我正在编写一个使用 RoboSpice 的应用程序 在请求侦听器 onRequestFailure SpiceException arg0 中 有没有办法确定该错误是由于发生 401 HTTP 错误而导致的 我有一个后端服务 当令牌过期时
  • Android 游戏偶尔出现延迟

    我正在用 Java 制作一个简单的 Android 游戏 我注意到每 20 40 秒就会出现一些烦人的延迟 首先 我认为它们是由垃圾收集器引起的 但当我检查 LogCat 时 我发现游戏滞后时没有垃圾收集 每当游戏开始滞后时 我都会标记日志
  • 如何从画布中删除路径区域(Android)

    我需要裁剪角落ImageView 不要将它们弄圆 而是擦除每个角上的三角形 似乎唯一的方法就是覆盖onDraw方法并使用从画布上删除这些区域Path 问题是我没有纯色背景 所以我需要擦除这些区域 但不要用某种颜色填充它们 我为此使用以下代码
  • Xcode 本地化设置中没有加号或减号按钮

    我需要在两天内翻译 iOS 应用程序 但我的 XCode 版本 4 4 和 4 5 Developer Preview 都没有给我添加其他语言的选项 我只能选择单击 Make localized 但我只能选择英语 选择它后 Xcode 中的
  • 如何在Room的数据库迁移中正确添加索引?

    我在迁移 Room 数据库时遇到问题 在更新的数据库中 我必须将一个字段从整数更改为双精度值 我读到它并不像听起来那么容易 为了做到这一点 我必须使用这个更改后的属性创建新的临时表 复制前一个表中的所有值 删除旧的值 最后重命名临时表 我的
  • 使用 twitter API 1.1 在 Android 应用程序中显示 twitter feed

    基本上我想展示这个提要 https en twitter com epl live https en twitter com epl live在我的应用程序中 由于 twitter 更改了其 api 1 1 每个调用都必须经过授权 我发现的
  • Grade Plugin 3-alpha1 输出文件导致错误

    我正在尝试将项目更新到 Android Studio 3 build gradle 文件中不再接受以下代码片段 applicationVariants all variant gt variant outputs each out gt d
  • 在 VideoView 开始播放之前,TextView 不会显示

    我编写了一个android应用程序 它有两个视图 TextView上方的VideoView 位于ScrollView内部 我遇到了一个问题 直到VideoView开始播放视频 TextView才显示 并且我有一个黑屏 这可能需要很长一段时间
  • 致命异常:GoogleApiHandler

    在我的项目中 我使用货币化服务 Vungle AppLovin 当我尝试加载广告时 出现此异常 E AndroidRuntime 致命异常 GoogleApiHandler 进程 kz ikar PID 3673 java lang NoS
  • Android SDK WebView调用Activity

    我试图在单击 WebView 组件内的链接时启动活动 我的Webview已加载到里面Main java我想启动SubActivity java当点击网站内的链接时Main java 另外 如何将参数传递给此活动 Example inspec
  • FCM 主题是否适合更多用户?

    我对使用主题消息有点困惑 我的场景是根据通知触发一些作业 请帮助我更多地了解这一点 如果我们正在处理大量用户 则可以使用 FCM 主题向用户发送通知 我们可以只使用数据消息和主题消息吗 使用主题发送的消息是否保证送达 我在 FCM 文档中看
  • 如何从另一个活动更新 Recyclerview 数据

    我有两个活动 MainActivity 和 Addlogactivity 我正在更新 Addlogactivity 中的数据 该数据应显示在 mainactivity recyclerview 中 数据未在数据库中更新 MianActivi
  • Retrofit 2.0:预期为 BEGIN_OBJECT,但在第 1 行第 1 列路径 $ [重复] 处为 STRING

    这个问题在这里已经有答案了 我在邮递员上传递了更新用户请求并获得了成功的响应 参见图片 现在当我尝试使用 Retrofit 2 在我的应用程序中执行相同操作时 出现错误 com google gson JsonSyntaxException
  • FCM(Firebase Cloud Messaging)如何发送到所有手机?

    我创建了一个小型应用程序 能够从 FCM 控制台接收推送通知 我现在想做的是向所有使用 API 安装应用程序的 Android 手机发送推送通知 这就是我完全迷失的地方 有没有办法在不收集所有注册ID的情况下将其发送到所有手机 这是否仅适用

随机推荐