其他分享
首页 > 其他分享> > android-“工作区”子视图无法在Google“ iosched”应用上填充高度

android-“工作区”子视图无法在Google“ iosched”应用上填充高度

作者:互联网

我正在使用Google I / O 2011的iosched应用程序.看着ScheduleFragment,我正在测试Workspace儿童的另一种视图来回移动页面.但是,我很难让孩子的观点填满父母.我添加了几种背景颜色和一些填充以显示所有内容的布局.这是我的测试…

我向fragment_schedule.xml中的“工作区”项添加了红色背景色,如下所示:

android:background="#cc0000"

然后,我没有使用子视图来使用blocks_content.xml,而是创建了自己的pending_content.xml,它只是一个绿色背景的LinearLayout(高度为fill_parent)和一个蓝色背景的TextView(高度也为fill_parent),并带有一个简单的文字行.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/container"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#00cc00"
    android:padding="5dip"
    xmlns:android="http://schemas.android.com/apk/res/android">
        <TextView
        android:id="@+id/text_view"
        android:background="#0000cc"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:text="Pending Content"
        android:textColor="#ffffff"
        />
</LinearLayout>

我添加我的视图,就像I / O应用有“天”一样.

ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_schedule, null);
mWorkspace = (Workspace) root.findViewById(R.id.workspace);

ShootView view = new ShootView();
view.index = mViews.size();
view.rootView = (ViewGroup) inflater.inflate(R.layout.pending_content, null);
view.label = "Pending";
mWorkspace.addView(view.rootView);
mViews.add(view);

这是我在设备上查看时看到的内容:

您会看到红色的Workspace会填充可用的父空间,而绿色的LinearLayout不会.我想念什么?

解决方法:

问题是在您的通货膨胀步骤中:

view.rootView = (ViewGroup) inflater.inflate(R.layout.pending_content, null);

您将丢失在XML中定义的LayoutParams,并且视图实际上最终带有默认的布局参数.

您需要做的是提供根,并且在充气期间不要将膨胀的布局附加到根上:

view.rootView = (ViewGroup) inflater.inflate(R.layout.pending_content, mWorkspace, false);

这将允许布局膨胀器根据已解析的XML属性为您的子视图构造适当的LayoutParams集.

标签:workspace,fill-parent,android
来源: https://codeday.me/bug/20191208/2090643.html