相关疑难解决方法(0)

如何根据父视图的尺寸调整Android视图的大小

如何根据其父布局的大小调整视图大小.例如,我有一个RelativeLayout填满整个屏幕,我想要一个儿童视图,比如说ImageView,占据整个高度,宽度的1/2?

我试图重写所有的onMeasure,onLayout,onSizeChanged,等我无法得到它的工作....

layout android

100
推荐指数
5
解决办法
15万
查看次数

如果由android设置,则getWidth()返回0:layout_width ="match_parent"

我有一个名为FractalView的类,它扩展了ImageView.我的目标是用这个具有整个屏幕大小的类来绘制分形.它是我活动的布局文件中唯一的View,而不是顶级的LinearLayout:

<?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"
    android:background="#FFFFFFFF">

    <com.antonc.fractal_wallpaper.FractalView
        android:id="@+id/fractal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

如您所见,我对FractalView和LinearLayout的layout_width和layout_height都使用"match_parent".此时我假设FractalView的大小设置为某个值,因为它匹配它的父级,它匹配它的父级(这是整个屏幕).然后我尝试使用getWidth()和getHeight()检测FractalView可用的大小:

public class FractalView extends ImageView {

private Context mContext;
private Handler mHandler;

private int mScrWidth;
private int mScrHeight;

public FractalView(Context context) {
    super(context);
    mContext = context;
    init();
}

private void init() {

    mScrWidth = getWidth();
    mScrHeight = getHeight();
    // Breakpoint
}

@Override
protected void onDraw(Canvas canvas) {
    [...]
}

}
Run Code Online (Sandbox Code Playgroud)

但是当我的代码到达断点时,调试器显示mScrWidth和mScrHeight为零.我尝试过使用getMeasuredWidth()和getMaxWidth(),但它们也返回了不正确的值.我已经阅读了类似问题的几个答案,即这一个,它们都解释了getWidth()在绘制返回图像的大小,而我实际需要的是该视图可用的区域宽度,我开始绘画之前.

有没有办法检索宽度和高度的这些值?

android android-layout

15
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×2

android-layout ×1

layout ×1