2017-01-18 9 views
0

Я создал фрагмент, который содержит FrameLayout, содержащее несколько кнопок:Android масштабируется кнопка не интерактивной

<FrameLayout android:id="@+id/menu_view" 
    android:layout_width="490dp" 
    android:layout_height="490dp" 
    android:layout_gravity="bottom|end" 
    android:layout_marginRight="-200dp" 
    android:layout_marginEnd="-200dp" 
    android:layout_marginBottom="-200dp" 
    android:background="@drawable/menu_view_bg"> 

    <Button android:id="@+id/menu_btn1" 
     android:layout_width="76dp" 
     android:layout_height="76dp" 
     android:paddingTop="15dp" 
     android:paddingBottom="10dp" 
     android:layout_marginLeft="185dp" 
     android:layout_marginStart="185dp" 
     android:layout_marginTop="107dp" 
     android:background="@drawable/menu_btn_bg" 
     android:drawableTop="@drawable/menu_item0" 
     android:textColor="@color/colorPrimaryDark" 
     android:textAllCaps="false" 
     android:text="@string/menu1"/> 

    <Button android:id="@+id/menu_btn2" 
     android:layout_width="76dp" 
     android:layout_height="76dp" 
     android:paddingTop="15dp" 
     android:paddingBottom="10dp" 
     android:layout_marginLeft="200dp" 
     android:layout_marginStart="200dp" 
     android:layout_marginTop="15dp" 
     android:background="@drawable/menu_btn_bg" 
     android:drawableTop="@drawable/menu_item1" 
     android:textColor="@color/colorPrimaryDark" 
     android:textAllCaps="false" 
     android:text="@string/menu2"/> 

     ... 
    </FrameLayout> 

В моем классе фрагмента, я масштабировать меню на клике по кнопке вне FrameLayout, но когда я пытаюсь чтобы щелкнуть по кнопкам внутри него, это не сработает. Если я не масштабирую вид при запуске, он работает.

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    FrameLayout menuView = (FrameLayout) getView().findViewById(R.id.menu_view); 
    menuView.setScaleX(0.1f); 
    menuView.setScaleY(0.1f); 

    Button btn = (Button) getView().findViewById(R.id.menu_main_btn); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      toggleMenu(); 
     } 
    }); 

    Button hotelBtn = (Button) getView().findViewById(R.id.menu_btn2); 
    hotelBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d("fef", "onClick: dodkoz"); 
     } 
    }); 
} 

В частности, если я комментирую эти две строки, он будет работать (я установил OnClick в моем классе фрагмента, а не в XML):

menuView.setScaleX(0.1f); 
menuView.setScaleY(0.1f); 

Я предполагаю, что это что-то делать с попаданием но я не могу найти, что именно. Я довольно новичок в Android dev, поэтому я не придумал обходной путь. Благодаря!

ответ

0

вы можете использовать это.

@Override 
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) 
{ 
     View view=inflater.inflate(R.layout.yourframelayout, container, false); 

     Button btn = (Button) view.findViewById(R.id.menu_main_btn); 
     btn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      // toggleMenu(); 
      } 
     }); 

     Button hotelBtn = (Button) view.findViewById(R.id.menu_btn2); 
     hotelBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.d("fef", "onClick: dodkoz"); 
      } 
     }); 
} 
+0

Где я должен использовать это? В классе Activity или Fragment? – Skoua

+0

, вы должны сохранить в своем классе фрагмент, чтобы удалить ваш. –

+0

Хорошо, я сделал это, но ничего не изменил. Если я масштабирую menuView до 0.1f в onCreateView() и масштабирую его до 1f позже, кнопки внутри menuView все равно не будут получать клик. – Skoua