PDA

View Full Version : clickable نشدن ImageButton



samiasoft
چهارشنبه 30 خرداد 1397, 21:01 عصر
سلام دوستان

من یک ImageButton دارم که اومدم بک گرند اونو نال کردم و برای Src اون هم ادرس عکس موردنظر رو قرار دادم.

<ImageButton android:background="@null"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_centerVertical="true"
android:src="@drawable/mic_icon"
android:id="@+id/speakButton"
android:onClick="ButtonOnClick"/>

ولی متاسفانه اون حالت کلیک شدن یا به اصطلاح همانند باتن فشاری بودن رو نداره ! با اینکه دستور داخلیشو اجرا میکنه و مشکلی نداره.

ممنون میشوم راهنمایی کنید

ناگفته نماند حتی روی یک باتن معمولی هم این کار رو انجام دادم که متاسفانه اونم به همین طریق اصلا حالت کلیک شدن رو نداره !!!!!!

farhad_shiri_ex
پنج شنبه 31 خرداد 1397, 04:05 صبح
سلام دوستان

من یک ImageButton دارم که اومدم بک گرند اونو نال کردم و برای Src اون هم ادرس عکس موردنظر رو قرار دادم.

<ImageButton android:background="@null"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_centerVertical="true"
android:src="@drawable/mic_icon"
android:id="@+id/speakButton"
android:onClick="ButtonOnClick"/>

ولی متاسفانه اون حالت کلیک شدن یا به اصطلاح همانند باتن فشاری بودن رو نداره ! با اینکه دستور داخلیشو اجرا میکنه و مشکلی نداره.

ممنون میشوم راهنمایی کنید

ناگفته نماند حتی روی یک باتن معمولی هم این کار رو انجام دادم که متاسفانه اونم به همین طریق اصلا حالت کلیک شدن رو نداره !!!!!!

وقتی خاصیت background ویوها را تغییر بدید حالت ripple اندروید (همان انمیشن دایره ای که با لمس باتن روی صفحه اتفاق می افته) وجود نخواهد داشت برای همین باید یک style درست کنید که همراه با ripple باشه و در خاصیت style باتن خودتون مقدار دهی کنید.
برای ripple های سفارشی هم قبلا تو همین تالار نمونه مثال گذاشتم یه جستجو کنید.!

samiasoft
پنج شنبه 31 خرداد 1397, 13:33 عصر
وقتی خاصیت background ویوها را تغییر بدید حالت ripple اندروید (همان انمیشن دایره ای که با لمس باتن روی صفحه اتفاق می افته) وجود نخواهد داشت برای همین باید یک style درست کنید که همراه با ripple باشه و در خاصیت style باتن خودتون مقدار دهی کنید.
برای ripple های سفارشی هم قبلا تو همین تالار نمونه مثال گذاشتم یه جستجو کنید.!

ممنون از شما دوست عزیز بابت راهنماییتون

اما متاسفانه برای استفاده از Ripple مجبورم از API 21 به بالا استفاده کنیم ..حال به نظرتون به جز این روش دیگری هم میتونه باشه ؟:متفکر: با این وضعیت اگر استفاده کنم اندروید های نسخه پایین این رو افکت رو نخواهند دید


البته برای بک گرند این رو هم نوشتم تا حدی خوبه که محل سلکت رو هایلایت میکنه »
android:background="?android:selectableItemBackground"

farhad_shiri_ex
شنبه 02 تیر 1397, 05:37 صبح
ممنون از شما دوست عزیز بابت راهنماییتون

اما متاسفانه برای استفاده از Ripple مجبورم از API 21 به بالا استفاده کنیم ..حال به نظرتون به جز این روش دیگری هم میتونه باشه ؟:متفکر: با این وضعیت اگر استفاده کنم اندروید های نسخه پایین این رو افکت رو نخواهند دید


البته برای بک گرند این رو هم نوشتم تا حدی خوبه که محل سلکت رو هایلایت میکنه »
android:background="?android:selectableItemBackground"

از این هم میتونید استفاد کنید برای نسخه های پایینتر

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Active tab -->
<item android:drawable="@color/yellow"
android:state_pressed="false"
android:state_selected="true"
/>
<!-- Inactive tab -->
<item android:drawable="@color/green"
android:state_pressed="false"
android:state_selected="false"
/>
<!-- Pressed tab -->
<item
android:drawable="@color/dark_yellow_selectcolor"
android:state_pressed="true"
/>

</selector>

کافی تو خاصیت background تعریف کنید