Skip to content

@scruffyfox /HintedImageButton.java
Last active

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Image view with long press hint
package in.lib.view;
import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.ImageView;
import android.widget.Toast;
/**
* Extended image view to show the content description in a Toast view when
* the user long presses.
*
* Note: `android:contentDescription` must be set in order for the toast to
* work
*
* @author Callum Taylor <http://callumtaylor.net>
*/
public class HintedImageButton extends ImageButton implements OnLongClickListener
{
private OnLongClickListener mOnLongClickListener;
public HintedImageButton(Context context)
{
super(context);
setOnLongClickListener(this);
}
public HintedImageButton(Context context, AttributeSet attrs)
{
super(context, attrs);
setOnLongClickListener(this);
}
@Override public void setOnLongClickListener(OnLongClickListener l)
{
if (l == this)
{
super.setOnLongClickListener(l);
return;
}
mOnLongClickListener = l;
}
@Override public boolean onLongClick(View v)
{
if (mOnLongClickListener != null)
{
if (!mOnLongClickListener.onLongClick(v))
{
handleLongClick();
return true;
}
}
else
{
handleLongClick();
return true;
}
return false;
}
private void handleLongClick()
{
String contentDesc = getContentDescription().toString();
if (!TextUtils.isEmpty(contentDesc))
{
int[] pos = new int[2];
getLocationInWindow(pos);
Toast t = Toast.makeText(getContext(), contentDesc, 1200);
t.setGravity(Gravity.TOP | Gravity.LEFT, pos[0] - ((contentDesc.length() / 2) * 12), pos[1] - 128);
t.show();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.