Я создал фрагмент, который содержит 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, поэтому я не придумал обходной путь. Благодаря!
Где я должен использовать это? В классе Activity или Fragment? – Skoua
, вы должны сохранить в своем классе фрагмент, чтобы удалить ваш. –
Хорошо, я сделал это, но ничего не изменил. Если я масштабирую menuView до 0.1f в onCreateView() и масштабирую его до 1f позже, кнопки внутри menuView все равно не будут получать клик. – Skoua