【问题标题】:2 custom views within an activity活动中的 2 个自定义视图
【发布时间】:2015-02-19 19:57:06
【问题描述】:

全部成交

我有一个游戏,它是自定义视图、画布和 onDraw 等。在 onSize 更改时,它会获得屏幕宽度和高度,还有动画等,并且运行良好。现在我想做的是将整个视图的大小减小 80%,然后使用剩下的 20%(底部)来显示另一个视图。搜遍了将近半天,可惜找不到答案或者看不懂所提供的答案。

【问题讨论】:

    标签: android canvas view android-custom-view


    【解决方案1】:

    为什么不在你的 android xml 中使用 LinearLayout 并在那里定义 2 个自定义视图?您也可以在这些视图中添加weights,以保持 80-20% 的比例。

    【讨论】:

    • 我试过这个。在主要活动中定义我的自定义视图的方式是 - Myview myView = new Myview(this);设置内容视图(我的视图);当我将它放入 LinearLayout 时,它会从 init (onsizechanged) 获取屏幕大小并抛出错误。顺便说一句,我没有物理 xml 文件。
    • 不确定您要做什么?当您执行setContentView(myView); 时,无论您做什么,都只会在整个屏幕上显示您的myView! (不会显示其他自定义视图)这就是为什么您创建一个 android xml(或者您也可以动态设置它)并将其设置为 LinearLayout,然后将您的自定义视图添加到其中。
    • 我在游戏中有很多位图,它们使用我从 onSizeChanged (int w, int h, int oldw, int oldh) 获得的屏幕宽度和高度进行缩放。所以我不知道如何告诉活动将 80% 的高度分配给一个视图,将 20% 的高度分配给另一个视图。
    • 这正是 LinearLayout 的权重的用途。通过将一个的 weight=".2" 和第二个的设置为 ".8",您实际上是在告诉系统您希望 Layout 分别占据 Layout 可用宽度的 80% 和 20%(是的,我同意这似乎违反直觉)。
    • 由于某种原因,当我在 LinearLayout 中执行相同操作时,它会在 CustomView 代码中指向 onSizeChanged 错误。请问有人吗?
    【解决方案2】:

    像这样创建布局 xml:

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    
    <com.your.pacakage.YourView
        android:layout_weight="0.8"
        android:layout_width="match_parent"
        android:layout_height="match_parent"        
        />
    
    
    <LinearLayout
        android:layout_weight="0.2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
    

    其中“com.your.pacakage.YourView”是您的游戏视图包。 接下来将此布局添加到 setContent。

    setContent(R.layout.main)
    

    【讨论】:

      猜你喜欢
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 2019-06-16
      相关资源
      最近更新 更多