我想将GraphView插入到LinearLayout中以在屏幕上显示它(图形),并且由于GraphView限制我不能使用android:layout_height =“wrap_content”用于我的LinearLayout所以我将使用LinearLayout.setScaleY代码来使GraphView填满屏幕。现在,我想问:
---有没有更好的方法让LinearLayout在没有android:layout_height =“wrap_content”代码的情况下填满屏幕?
如果没有,我怎样才能获得活动的实际可用高度,以便在我的代码中使用它而不是metrics.heightPixels? +我已经设置了LinearLayout 500dp的高度,所以我在我的代码中使用了500 ...
我的代码在这里:
LinearLayout mLL = (LinearLayout) findViewById(R.id.mLL);
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
mLL.setScaleY(metrics.heightPixels/(float)500);
mLL.addView(mGraphView);
谢谢 :)
解决了 ! (由于名声不好,我无法在接下来的几个小时内回答我的问题,所以我编辑了我的帖子...... :))
我不得不在XML文件中定义LinearLayout,如下所示:
<LinearLayout
android:id="@+id/mLinearLayout"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_above="@+id/mlinearLayout2"
android:layout_below="@+id/title"
android:layout_centerHorizontal="true"
android:orientation="vertical" >
正如你所看到的,我使用了android:layout_height =“100dp”和android:layout_above =“@ + id / mlinearLayout2”(我在mLinearLayout下使用了另一个线性布局)代码,然后在FullScreen中没有任何ForceClose的情况下可以查看Graph LinearLayout :)我希望这篇文章可以帮助其他人轻松解决类似问题,并对代码进行一些更改!:)
我也发现了这个问题:如果你想获得LinearLayout高度,你可以使用这个代码:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus == true) {
LinearLayout myLinearLayout = (LinearLayout) findViewById(R.id.myLinearLayout);
int layoutWidth = myLinearLayout.getWidth();
int layoutHeight = myLinearLayout.getHeight();
}
}
getWindowManager().getDefaultDisplay().getMetrics(metrics);
我不知道是否提供与您相同的输出但值得一试。基于metrics.heightPixels我认为您可以调整视图的尺寸
我在互联网上搜索了一个简单的方法,但找不到一个小时的搜索。
这是我使用的,因为没有办法(似乎)直接得到这个值。我首先得到显示器的尺寸。我获得动作和通知栏的高度并减去它们:
int height = 0;
private void obtainHeight() {
int actionBarHeight = 0;
int notificationBarHeight = 0;
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
height = size.y;
TypedValue tv = new TypedValue();
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics());
}
int resourceIdStatusBar = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceIdStatusBar > 0) {
notificationBarHeight = getResources().getDimensionPixelSize(resourceIdStatusBar);
}
height = height - actionBarHeight - notificationBarHeight;
}
您可以使用的导航栏(不需要减去,因为它通常不是显示的一部分):
Resources resources = this.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
if (resourceId > 0) {
naviigationBarHeight = resources.getDimensionPixelSize(resourceId);
}