我无法移动TextViews。我正在尝试创建一个简单的系统,允许我使用相对布局基于屏幕%的像素放置文本。以下是我的代码。 (请注意,我必须支持API 11)。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
System.err.println("MWidth: " + width + " MHeight: " + height);
int rowOneHeight = (int)Math.floor((float)height * 0.65);
System.err.println("New height: " + rowOneHeight);
days.setHeight(rowOneHeight);
hours.setHeight(rowOneHeight);
这会产生结果:
29735-29735/ct.test.testingW/System.err﹕ MWidth: 1080 MHeight: 1776
04-29 20:09:39.401 29735-29735/ct.test.testing W/System.err﹕ New height: 1154
然而,文字视图位于屏幕顶部?我不明白为什么。
答案 0 :(得分:0)
为什么不使用LinearLayout并设置权重。然后,您可以根据屏幕的百分比定义大小
<LinearLayout
...
android:layout_weight="3">
<View
...
android:weight="1"/>
<View
...
android:weight="2"/>
</LinearLayout>
顶部视图占用屏幕的33.33%,底部消耗其他66.66%。
答案 1 :(得分:0)
您应该使用setY()而不是textView的setHeight。
更改textview的高度不会改变&#34; position&#34;如果您没有将“重力”设置为非默认值(=左上角),则会在屏幕上显示文本。通过改变视图的高度/宽度,只有底部和右侧将被移动&#34; (锚点位于视图的左上角)。
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
System.err.println("MWidth: " + width + " MHeight: " + height);
int rowOneHeight = (int)Math.floor((float)height * 0.65);
System.err.println("New height: " + rowOneHeight);
// Set distance to top (in pxl)
days.setY(rowOneHeight);
hours.setY(rowOneHeight);