我的源代码在 Android Studio 3.4.1 中的 Kotlin 中(可与 Java 完全互操作)。
我在动态创建的视图的绝对定位中存在严重的错误问题。我的相对布局是空的,没有视图。我已经阅读了与此相关的所有 Stack Overflow 问题,但对我没有帮助。
我已将代码减少到最低限度,只是为了表达我对社区的痛苦:
我的活动代码是
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val mt = this.resources.displayMetrics
wScreen = mt.widthPixels // 1080 pixels
hScreen = mt.heightPixels // 1920 pixels
bt = Button(this)
myLayout.addView(bt) // MyLayoit is relative layout ID
bt.id = View.generateViewId()
bt.setBackgroundColor(Color.RED)
// % view height is 6,3% of screen heigth
bt.layoutParams = RelativeLayout.LayoutParams
(round(0.1786* wScreen).toInt(), //193 pixels
round(0.0633*hScreen).toInt()) // 122 pixels
// top button is 92,7% of height screen
bt.x = 0.0179F * wScreen // Left position: 19 pixels
bt.y = 0.927F * hScreen // Top position: 1780 pixels
} // On Create
} // Main Activity
我的相对布局XML为空:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/myLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=
"br.com.greatsolutions.paulo.yourcalcs.MainActivity">
</RelativeLayout>
模拟器的尺寸为2392x1440,显示了30%的高度减少了 按钮下方的一小部分空白。我知道这是因为我将同一按钮放在不同的位置。
我的手机尺寸为1920x1080。它显示相同的屏幕
如果有人可以帮助我,那将非常好。我需要在我的应用中进行精确的动态定位...
更新1:我尝试使用框架布局而不是相对布局来运行。没有成功。
更新2:我已经找到了解决方案。我期望的与众不同,但是可以。坚持不懈是发明之母。我没有注意到绿色的小顶部栏...
答案 0 :(得分:0)
我已经找到了解决我痛苦的办法。这几乎是疯狂的事情 在 Internet 上几乎没有涉及。与我的程序无关。如果使用 Java 或 Kotlin 进行编码,则没有关系。
我的项目在styles.xml
中具有样式(在 Android项目结构中为app/res/values
),以摆脱状态栏,其程序标题位于顶部:
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
在AndroidManifest.xml
(在 Android项目结构中的app/Manifest
)中,我已在应用程序标记下添加了这一行
android:theme="@style/AppTheme.NoActionBar">
当我在 Java 中对项目进行重新编程(可能要提交给社区)并运行时,我注意到程序标题再次出现在顶部,因此我的按钮在下面消失了。 / p>
好的,没问题。我回到了 Kotlin 项目,并在新的 Java 项目中进行了上述更改。
因此,按钮出现了,但它被切掉了,就像我在 Kotlin 中的原始项目一样。
但是,我猜:这是因为我的切割问题与此相关吗?
我再次搜索如何在应用程序中删除标题栏,并且在 Stack Overflow 中发现了this post。
该帖子显示了我从未见过的2条新闻专线。也许...
因此,我在NoActioBar
样式中添加了2行。
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
实际上,这个windowFullScreen
标志完全解决了我原来的问题!!!
发生了什么变化?屏幕顶部消失了带有电池电量,电话信号和其他内容的绿色小顶部状态栏。这是全屏设置的效果