包括具有相同子ID的自定义布局

时间:2016-12-19 10:51:22

标签: java android android-layout

我正在使用在相对布局中具有微调器的自定义控件。在我的活动中,我必须使用其中两个自定义控件。问题是当从活动访问微调器时返回相同的id。

自定义控件的代码

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


    <Spinner
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_alignParentLeft="true"
        android:background="@drawable/bg_white"
        android:popupBackground="@drawable/bg_white"/>
    <Button
        android:layout_width="15dp"
        android:layout_height="10dp"
        android:layout_marginRight="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="20dp"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_centerInParent="false"
        android:clickable="false"
        android:background="@drawable/btn_dropdown"/>
</RelativeLayout>

活动代码:

    RelativeLayout rl_category,rl_subcategory;
    Spinner sp_category,sp_subcategory;

  rl_category=(CustomSpinner) findViewById(R.id.sp_category);
  rl_subcategory=(CustomSpinner) findViewById(R.id.sp_subcategory);
  sp_category=(Spinner) rl_category.findViewById(R.id.spinner);
  sp_subcategory=(Spinner) rl_subcategory.findViewById(R.id.spinner);

如果android没有在同一个活动中区分这些ID,那么我应该如何在活动中添加多个自定义布局。

3 个答案:

答案 0 :(得分:0)

在相同的xml布局中,您不能两次使用相同的ID。以非常简单的方式,您可以使用不同的微调器id声明两个自定义控件。您希望重用自定义控件,根据您的要求在其他活动中执行此操作。

答案 1 :(得分:0)

当您声明任何ID已在数字模式中保存在 R.java 类中时,因此您在同一 XML 然后它将返回相同的数字结果。你需要更改ID。 希望它会对你有所帮助。

答案 2 :(得分:0)

您不能在同一个xml文件中多次使用id。 为此,您可以在activity的xml中多次包含自定义控件布局。

在这里,我已经包含了两次自定义布局

<强> activity_main.xml中

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

   <include
    android:id="@+id/customControl1"
    layout="@layout/custom_layout"/>

   <include
    android:id="@+id/customControl2"
    layout="@layout/custom_layout"/>

</LinearLayout>

以及活动代码

sp_category=(Spinner) findViewById(R.id.customControl1).findViewById(R.id.spinner);
sp_subcategory=(Spinner) findViewById(R.id.customControl2).findViewById(R.id.spinner);

<强> custom_layout.xml

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


    <Spinner
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_alignParentLeft="true"
        android:background="@drawable/bg_white"
        android:popupBackground="@drawable/bg_white"/>
    <Button
        android:layout_width="15dp"
        android:layout_height="10dp"
        android:layout_marginRight="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="20dp"
        android:layout_centerVertical="true"
        android:layout_alignParentRight="true"
        android:layout_centerInParent="false"
        android:clickable="false"
        android:background="@drawable/btn_dropdown"/>
</RelativeLayout>