gpt4 book ai didi

Android 自定义 View 完全忽略布局参数 im xml,并在整个屏幕上拉伸(stretch)

转载 作者:行者123 更新时间:2023-11-29 18:22:42 25 4
gpt4 key购买 nike

我正在使用具有背景图片并用于在其上绘制内容的自定义 View 。

这个 View 忽略了 android:layout_width="wrap_contentandroid:layout_height="wrap_content,它没有包裹背景图片,而是拉伸(stretch)和插入下面的控件屏幕外的 View 。

自定义 View 在主 LinearLayout 中,但无论我把它放在哪里,它的行为都是一样的。

我尝试使用 setLayoutParams,但在可见控件下物理尺寸在某种程度上仍然相同,并且由于我为其他时间保存的坐标,尺寸很重要。它甚至出现在自定义标题下,坐标作为负数返回,这也是一个问题。

我不喜欢因为屏幕尺寸不同而静态设置尺寸的想法。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<org.danizmax.tradar.MapView
android:id="@+id/mapView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

<!-- koordinate -->
<LinearLayout android:id="@+id/controls"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="10sp"
android:paddingRight="10sp">

<TextView android:id="@+id/coordsText"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:textStyle="bold"
android:textSize="15sp"
android:gravity="center"
android:layout_weight="1">
</TextView>

</LinearLayout>

<!-- radij -->
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="10sp"
android:paddingLeft="-5sp"
android:paddingRight="-5sp">
<Button android:text=""
android:id="@+id/ButtonInc"
android:background="@drawable/leftbuttonani"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</Button>
<TextView android:id="@+id/radiusSize"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textStyle="bold"
android:textSize="16sp"
android:gravity="center"
android:layout_weight="1"
android:paddingLeft="0sp"
android:paddingRight="0sp">
</TextView>
<Button android:text=""
android:id="@+id/ButtonDec"
android:background="@drawable/rightbuttonani"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</Button>
</LinearLayout>

<!-- alert togle -->
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="-5sp"
android:paddingRight="-5sp">
<Button android:text=""
android:id="@+id/ButtonDec"
android:background="@drawable/buttonani"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</Button>
<ToggleButton
android:id="@+id/toggleAlert"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#D8D8D8"
android:background="@drawable/buttonani"
android:textOn="@string/alertOn"
android:textOff="@string/alertOff"
android:textStyle="bold"
android:layout_weight="0.5"
android:paddingTop="1sp">
</ToggleButton>
<Button android:text=""
android:id="@+id/ButtonDec"
android:background="@drawable/buttonani"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</Button>
</LinearLayout>

<!-- izpis zadnjega dogodka -->
<TextView android:id="@+id/timeStatText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="10sp"
android:gravity="center">
</TextView>

它应该是这样的,蓝色部分是MapView:

alt text

有什么想法吗?

最佳答案

问题已通过覆盖 onMeasure() 解决:

    @Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec){
super.onMeasure(widthMeasureSpec, heightMeasureSpec);

int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
if(parentWidth<parentHeight){
this.setMeasuredDimension(parentWidth, (int)(parentWidth*(float)factor));
}else{
this.setMeasuredDimension((int)(parentHeight/(float)factor), parentHeight);
}
}

找到更详细的答案HERE .

关于Android 自定义 View 完全忽略布局参数 im xml,并在整个屏幕上拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4453116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com