0

这个问题在这里被问过很多次,但没有一个解决方案对我有用,因为我的 XML 布局有点不同。

我有一个带有LinearLayout 的XML,其中包含一个ImageView 和一个TextView。XML 是使用 Java 代码填充的。它是一个文件选择器库,它列出了 android 文件系统中存在的文件和文件夹

这是 XML:

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

   <ImageView
        android:id="@+id/file_picker_image"
        android:layout_width="40dip"
        android:layout_height="40dip"
        android:layout_marginBottom="5dip"
        android:layout_marginLeft="5dip"
        android:layout_marginTop="5dip"
        android:contentDescription="@string/app_name"
        android:scaleType="centerCrop"
        android:src="@drawable/file" />

    <TextView
        android:id="@+id/file_picker_text"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dip"
        android:singleLine="true"
        android:text="@string/file_name"
        android:textSize="28sp" />

</LinearLayout>

现在,我想在此列表下方添加一个按钮。当我尝试在 XML 中添加按钮时,它会遍历每一行,并且按钮会显示在每一行中。当我使用Java代码执行此操作时,按钮更近,也不显示文本视图,但显示图像视图。

我想要的与这篇文章中的图像相似,但直到现在都无法实现。我在此处阅读的这些解决方案或任何其他解决方案均不适用于我的情况。

我正在尝试在其源代码在上面提供的链接中的 Activity 中使用此代码添加按钮。我尝试在 FilePickerListAdapter 的构造函数中添加以下代码。

            RelativeLayout relLayout = new RelativeLayout(context);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
            params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

            Button filterBtn = new Button(context);
            filterBtn.setText("Filter");

            relLayout.addView(filterBtn, params);

请指导我我做错了什么,以及如何使它成为可能。

问候。

4

2 回答 2

1

混合使用 xml 方式和编程方式来创建视图并不是一个好主意。您不妨先在 xml 中创建所有视图(包括您的按钮),只需将您的按钮设置android:visibility="gone"为隐藏它。在需要时将其设置为可见。

于 2013-05-09T08:00:24.330 回答
0

这可能不是您要求的,但它是您可以尝试的替代方案。我layout_weight在您的 xml 中实现并在屏幕末尾包含按钮。其结果将与您问题中的链接类似。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:weightSum="1" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_weight=".9" >

       <ImageView
           android:id="@+id/file_picker_image"
           android:layout_width="40dip"
           android:layout_height="40dip"
           android:layout_marginBottom="5dip"
           android:layout_marginLeft="5dip"
           android:layout_marginTop="5dip"
           android:contentDescription="@string/app_name"
           android:scaleType="centerCrop"
           android:src="@drawable/file" />

       <TextView
           android:id="@+id/file_picker_text"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_marginLeft="10dip"
           android:singleLine="true"
           android:text="@string/file_name"
           android:textSize="28sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_weight="0.1" >

        <Button
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />  <!--Your Button-->

    </LinearLayout>

</LinearLayout>
于 2013-05-09T08:32:38.257 回答