【问题标题】:how to add different layer when i click a button单击按钮时如何添加不同的图层
【发布时间】:2014-10-13 11:58:51
【问题描述】:

我有 4 个 imageButton , 当我单击其中一个按钮时,应在我创建的 imageView 上显示一个图层。

public void onClick(View v) {

    switch(v.getId()){

    case R.id.categoriaA1:

        // add layer a1
        break;

    case R.id.categoriaA2:
        // add layer a2
        break;
    case R.id.categoriaA3:
        //add  layer A3
        break;
    case R.id.categoriaA4:
        // add layer A4
        break;

myAvatar 是我的 ImageView。 有人可以帮我吗?

编辑这是我的 xml 代码(我在 4 个类别中有 20 个 imageButton)

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="1"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.settingavatar.MyAvatar" >

<!-- problemi con il dimensionamento -->

<ImageView
    android:id="@+id/anteprimaAvatar"
    android:layout_width="282dp"
    android:layout_height="150dp" 

    android:background="@drawable/btn_background"/>
<!-- griglia che contiene le 4 categorie per i vari oggetti che si possono aggiungere all'avatar -->

<GridLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/anteprimaAvatar"
    android:orientation="vertical" >

    <!-- sottogriglia per la categoria A -->

    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/categoriaA1"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/cata1"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaA2"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/cata2"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaA3"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/cata3"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaA4"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/cata4"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaA5"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:tag="accessorio" />
    </GridLayout>

    <!-- sottogriglia per la categoria B -->

    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/categoriaB1"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catb1"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaB2"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catb2"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaB3"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catb3"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaB4"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catb4"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaB5"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:tag="accessorio" />
    </GridLayout>

    <!-- sottogriglia per la categoria C -->

    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/categoriaC1"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catc1"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaC2"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catc2"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaC3"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catc3"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaC4"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catc4"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaC5"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:tag="accessorio" />
    </GridLayout>

    <!-- sottogriglia per la categoria D -->

    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <ImageButton
            android:id="@+id/categoriaD1"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catd1"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaD2"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catd2"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaD3"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catd3"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaD4"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catd4"
            android:tag="accessorio" />

        <ImageButton
            android:id="@+id/categoriaD5"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:tag="accessorio" />
    </GridLayout>
</GridLayout>

【问题讨论】:

  • 层是什么意思?布局还是什么?您可以按照其他人的建议更改图像视图,或者如果这是您想要做的,您可以在图像视图上隐藏/显示布局
  • 我正在尝试做你的第二个选项,但我不知道怎么做。
  • 它可以通过在图像视图上进行布局并隐藏它来轻松完成,然后单击按钮将该布局的可见性设置为 View.VISIBLE,如果您仍然对发布您的 xml 感到困惑,所以我可以帮助你的代码:)
  • 查看最近发布的答案,您可以这样做来解决您的问题。只有 LinearLayout 或您使用的任何布局应与图像视图大小相同,希望对您有所帮助:)
  • 看下面的答案

标签: android layer


【解决方案1】:

对布局使用可见性操作

举例

        LinearLayout lly1 = (LinearLayout)findViewById(R.id.lly1);
        LinearLayout lly2 = (LinearLayout)findViewById(R.id.lly1);
        LinearLayout lly3 = (LinearLayout)findViewById(R.id.lly1);
        LinearLayout lly4 = (LinearLayout)findViewById(R.id.lly1);


  public void onClick(View v) {

switch(v.getId()){

case R.id.categoriaA1:

    // add layer a1
   lly1.setVisibility(v.VISIBLE);
   lly2.setVisibility(v.GONE);
   lly3.setVisibility(v.GONE);
   lly4.setVisibility(v.GONE);
    break;

case R.id.categoriaA2:
    // add layer a2
   lly2.setVisibility(v.VISIBLE);
   lly1.setVisibility(v.GONE);
   lly3.setVisibility(v.GONE);
   lly4.setVisibility(v.GONE);
    break;
case R.id.categoriaA3:
    //add  layer A3
   lly3.setVisibility(v.VISIBLE);
   lly2.setVisibility(v.GONE);
   lly1.setVisibility(v.GONE);
   lly4.setVisibility(v.GONE);
    break;
case R.id.categoriaA4:
    // add layer A4
   lly4.setVisibility(v.VISIBLE);
   lly2.setVisibility(v.GONE);
   lly3.setVisibility(v.GONE);
   lly1.setVisibility(v.GONE);

    break;

}

到哪里来布局activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/lly1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:visibility="visible" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/lly2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:visibility="gone" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/lly3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:visibility="gone" >
    </LinearLayout>

    <LinearLayout
        android:id="@+id/lly4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:visibility="gone" >
    </LinearLayout>

</RelativeLayout>

【讨论】:

    【解决方案2】:

    您可以在单击时更改目标 imageView 的源或背景。
    例如

    ImageView imageview = (ImageView) root.findViewById(R.id.categoriaA1);
    imageview.setBackground(Drawable your_background);
    

    【讨论】:

    • 但我不会替换 imageView,而是在我的图像中添加一个新层
    • 所以你替换布局,而不是 imageView
    【解决方案3】:
      <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:columnCount="1"
      android:orientation="vertical"
      android:paddingBottom="@dimen/activity_vertical_margin"
      android:paddingLeft="@dimen/activity_horizontal_margin"
      android:paddingRight="@dimen/activity_horizontal_margin"
      android:paddingTop="@dimen/activity_vertical_margin"
      tools:context="com.example.settingavatar.MyAvatar" >
    
    
    
      <ImageView
    android:id="@+id/anteprimaAvatar"
    android:layout_width="282dp"
    android:layout_height="150dp" 
    android:background="@drawable/btn_background"/>
    
    <LinearLayout 
     android:id="@+id/anteprimaAvatarLinear"
     android:layout_width="282dp"
     android:visibility="gone"
     android:layout_height="150dp"></LinearLayout>
    
    <GridLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/anteprimaAvatar"
    android:orientation="vertical" >
    
    <!-- sottogriglia per la categoria A -->
    
    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    
        <ImageButton
            android:id="@+id/categoriaA1"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/cata1"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaA2"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/cata2"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaA3"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/cata3"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaA4"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/cata4"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaA5"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:tag="accessorio" />
    </GridLayout>
    
    <!-- sottogriglia per la categoria B -->
    
    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    
        <ImageButton
            android:id="@+id/categoriaB1"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catb1"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaB2"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catb2"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaB3"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catb3"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaB4"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catb4"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaB5"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:tag="accessorio" />
    </GridLayout>
    
    <!-- sottogriglia per la categoria C -->
    
    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    
        <ImageButton
            android:id="@+id/categoriaC1"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catc1"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaC2"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catc2"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaC3"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catc3"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaC4"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catc4"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaC5"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:tag="accessorio" />
    </GridLayout>
    
    <!-- sottogriglia per la categoria D -->
    
    <GridLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    
        <ImageButton
            android:id="@+id/categoriaD1"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catd1"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaD2"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catd2"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaD3"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catd3"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaD4"
            android:layout_width="34dp"
            android:layout_height="34dp"
            android:background="@drawable/catd4"
            android:tag="accessorio" />
    
        <ImageButton
            android:id="@+id/categoriaD5"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:tag="accessorio" />
    </GridLayout>
    </GridLayout> 
    

    并在 JAVA 代码中针对按钮单击执行此操作:

     LinearLayout anteprimaAvatarLinear= (LinearLayout)findViewById(R.id.anteprimaAvatarLinear);
     ImageView anteprimaAvatar= (ImageView) findViewById(R.id.anteprimaAvatar);
     anteprimaAvatarLinear.setVisibility(v.VISIBLE); 
     anteprimaAvatar..setVisibility(v.GONE);  // OR INVISIBLE
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多