【问题标题】:Using layout as a sublayout & accessing it programatically in android?使用布局作为子布局并在 android 中以编程方式访问它?
【发布时间】:2012-10-12 11:34:36
【问题描述】:

我有一个名为 thumb_unit.xml 的布局

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

    <ImageView
        android:id="@+id/thumbImage"
        android:layout_marginLeft="10dp"
        android:layout_width="160dp"
        android:layout_height="220dp"
        android:scaleType="fitXY"
        android:src="@drawable/app_icon" 
            android:layout_marginTop="20dp"/>

    <LinearLayout
        android:layout_width="160dp"
        android:layout_height="match_parent"
        android:layout_marginTop="20dp"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/issueName"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:text="Summer 2012"
            android:textSize="18dp"
            android:layout_marginLeft="6dp"
             />

        <TextView
            android:id="@+id/description"
            android:layout_width="match_parent"
            android:layout_height="151dp"
            android:layout_marginLeft="6dp"
            android:text="Description"
            android:textSize="14dp"
            android:textStyle="italic" />

        <Button
            android:id="@+id/view_download"
            android:layout_marginTop="5dp"
            android:layout_width="80dp"
            android:layout_marginLeft="5dp"
            android:layout_height="30dp"
            android:text="View"
            android:textSize="14dp" 
            android:textColor="@drawable/push_button_text_color"
            android:background="@drawable/push_button"
            android:layout_marginBottom="40dp"
            />

    </LinearLayout>

</LinearLayout>

还有另一个名为 grid_unit.xml 的布局

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

    <ImageView
        android:id="@+id/thumbImage"
        android:layout_width="77dp"
        android:layout_height="105dp"
        android:src="@android:drawable/ic_menu_gallery" 
        android:layout_marginTop="10dp"
        />

    <LinearLayout
        android:layout_width="73dp"
        android:layout_height="120dp"
        android:orientation="vertical"
        android:layout_marginTop="10dp"
        android:layout_marginRight="10dp"
         >

        <TextView
            android:id="@+id/issueName"
            android:layout_width="77dp"
            android:layout_marginTop="5dp"
            android:layout_height="30dp"
            android:text="South Louisiana PnK"
            android:layout_marginLeft="3dp"
            android:textSize="11dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/productName"
            android:layout_marginTop="5dp"
            android:layout_width="70dp"
            android:layout_height="30dp"
            android:layout_marginLeft="3dp"
            android:text="South Louisiana PnK"
            android:textSize="9dp" />

        <Button
            android:id="@+id/viewButton"
            android:layout_width="70dp"
            android:layout_height="20dp"
            android:text="View"
            android:textSize="9dp"
            android:textColor="@drawable/push_button_text_color"
            android:background="@drawable/push_button"
            android:layout_marginTop="5dp"
            android:layout_marginLeft="3dp"
             />

    </LinearLayout>

</LinearLayout>

现在终于,我有了主要的activity_main.xml,我想将这些组合用作

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="440dp"
    android:orientation="vertical"
    tools:context="com.mirabel.activities.MainActivity" >

    <include layout="@layout/thumb_unit" android:id="@+id/main_thumb"/>
    <LinearLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <include layout="@layout/grid_unit" android:id="@+id/left_grid"/>
        <include layout="@layout/grid_unit" android:id="@+id/right_grid"/>

    </LinearLayout>


</LinearLayout>

activity_main.xml 中的子布局并以编程方式为所有这些内容设置图像、文本。该怎么做?

【问题讨论】:

标签: android android-layout android-linearlayout layout-inflater


【解决方案1】:

您可以通过以下方式在activity_layout.xml 的Activity 文件中执行此操作:

View view = findViewById(R.id.left_grid);
ImageView image = view.findViewById(R.id.thumbImage);
image.setBackgroundResource(R.id.image));    //or whatever you wish to set

TextView text = view.findViewById(R.id.issueName);
text.setText("Whatever text you want to set);

通过这种方式,您可以访问包含的布局中的所有视图。

【讨论】:

  • @Tahira.. 我知道在正常情况下该怎么做。但是,在这种情况下,我想使用。这个有点不同。仔细观察。我在主布局中使用布局作为子布局。在那,布局有子组件,我想访问这些组件。
  • 是的塔鲁尼玛。我想你没有仔细看我的回答。查看视图 = findViewById(R.id.left_grid); ImageView 图像 = view.findViewById(R.id.thumbImage);访问 ImageView 时,需要引用之前找到的 View(view) 对象,而不是 Activity 对象。 view.findViewById(R.id.thumbImage);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2012-08-07
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多