gpt4 book ai didi

android - 仅为 TextView 复合可绘制对象实现 onClick

转载 作者:IT老高 更新时间:2023-10-28 22:13:46 25 4
gpt4 key购买 nike

我需要在左侧有一些带有可绘制对象的文本,并且我想在用户单击/触摸图像时执行一些代码(只有图像,而不是文本),所以我使用了 LinearLayout 带有一个 TextView 和一个可点击的 ImageView 并启动一个 onClick 事件。 XML 解析器建议我用带有 compound drawableTextView 替换它,这样可以用更少的 XML 行来绘制相同的东西。 .我的问题是“我可以指定我只想在 TextView 的可绘制对象上而不是在 TextView 本身上处理 onClick 事件吗?我已经看到了一些解决方案涉及编写自己的 TextView 扩展,但我只对能够在布局资源中执行此操作感兴趣,如果可能的话,否则我将保留以下 XML代码:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom"
android:paddingTop="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="@string/home_feedback_title"
android:textColor="@android:color/primary_text_dark"
android:textStyle="bold"
android:paddingBottom="4dp"/>


<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/action_feedback"
android:clickable="true"
android:onClick="onClickFeedback"
android:contentDescription="@string/action_feedback_description"/>
</LinearLayout>

最佳答案

它非常简单。假设您在 TextView 'txtview' 的左侧有一个可绘制对象。下面就可以解决问题了。

TextView txtview = (TextView) findViewById(R.id.txtview);
txtview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
if(event.getRawX() <= txtview.getTotalPaddingLeft()) {
// your action for drawable click event

return true;
}
}
return true;
}
});

如果您想要正确的可绘制对象,请将 if 语句更改为:

if(event.getRawX() >= txtview.getRight() - txtview.getTotalPaddingRight())

同样,您可以对所有复合可绘制对象执行此操作。

txtview.getTotalPaddingTop();
txtview.getTotalPaddingBottom();

此方法调用返回该侧的所有填充,包括任何可绘制对象。您甚至可以将它用于 TextView、Button 等。

点击here供android开发者网站引用。

关于android - 仅为 TextView 复合可绘制对象实现 onClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10666174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com