- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我遇到了按钮单击事件和搜索栏事件未触发的问题。当我在搜索栏上拖动时, slider 会在视觉上改变位置,但在我的 OnSeekBarChangedListener
中没有触发任何事件。我还有一个 ImageButton
应该接收点击事件,但它也不会触发。此处底部的 MyView 正确处理触摸事件。它包含一个 GLSurfaceView
,我可以平移和缩放。什么可能导致事件不触发?
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tec_root">
<ImageButton
android:id="@+id/button_star"
android:contentDescription="@string/star_description"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_marginTop="16dp"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:src="@drawable/star_empty"
android:background="#00000000"
android:scaleType="fitXY"/>
<LinearLayout
android:id="@+id/view_plot"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@id/button_star"/>
<SeekBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/button_star"
android:layout_toStartOf="@id/button_star"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:progress="50"
android:layout_alignBaseline="@id/button_star"
android:id="@+id/seekbar" />
</RelativeLayout>
这里是听众:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity);
prefs = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
starred = prefs.getBoolean("starred", false);
final ImageButton starButton = (ImageButton) findViewById(R.id.button_star);
starButton.setImageDrawable(ContextCompat.getDrawable(this, (starred ? R.drawable.star_filled :
R.drawable.star_empty)));
starButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
starred = !starred;
prefsEditor = prefs.edit();
prefsEditor.putBoolean("starred", starred);
prefsEditor.apply();
starButton.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(),
(starred ? R.drawable.star_filled : R.drawable.star_empty)));
}
});
((SeekBar) findViewById(R.id.seekbar)).setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
Log.e("TEST", "Seekbar onProgressChanged called");
Toast.makeText(getApplicationContext(), "Seekbar fired", Toast.LENGTH_SHORT).show();
// respond to update
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
MyView myView = new MyView(this, points, false);
((LinearLayout) findViewById(R.id.view_plot)).addView(myView);
}
最佳答案
试试这个,用FrameLayout代替LinearLayout,性能不是最好的,但效果很好
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tec_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<SeekBar
android:id="@+id/seekbar"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:background="#ABABAB"
android:layout_weight="1"
android:progress="50" />
<ImageButton
android:id="@+id/button_star"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="#00000000"
android:contentDescription="@string/star_description"
android:scaleType="fitXY"
android:src="@drawable/star_empty" />
</LinearLayout>
<FrameLayout
android:id="@+id/view_plot"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
/>
</LinearLayout>
关于Android SeekBarChangeListener 和 TouchListener 无事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31458849/
我是 Android 新手,在遵循在线教程后,我在使用 TicTacToe 游戏的 touchListener 代码块时遇到了问题。 我不断收到的错误是: 对于参数类型 boolean、void,运算
我在做游戏。我使用 GridView 来显示各种形状的游戏 block (类似俄罗斯方 block )。所以我有 L block 、T block 等。 当玩家触摸并按下一个方 block 时,他可以
我有一个包含几个 View 的 FrameLayout。我想将 TouchListener 设置为 frameLayout,布局是在代码中创建的: FrameLayout textLayout = n
我有两个布局 table.xml(port) 和 table.xml(land),其中一个命名为 landscape,另一个命名为 protrait。 我已将此布局包含在另一个名为 fragment_
我有一个带有 SlidingDrawer 的 RelativeLayout。我正在使用抽屉作为菜单。当您单击抽屉中的某个项目时,它会将一个 ImageView 添加到 RelativeLayout。我
我有一个 Canvas ,我在上面设置了一条路径 Path path = new Path(); path.moveTo(1, 1); path.lineTo(90, 1); path.lineTo(
我想让我正在创建的组件的 Drawable 可触摸,有人知道该怎么做吗? final Drawable selected = backgroundSelected; selected.setBound
我正在尝试创建一个自定义 GridView,但我在使用触摸监听器时遇到了问题。 我想做什么: 使用自定义 Views 创建 GridView。 长按某个项目使其变为“可编辑”。 水平或垂直拖动 Vie
我遇到了按钮单击事件和搜索栏事件未触发的问题。当我在搜索栏上拖动时, slider 会在视觉上改变位置,但在我的 OnSeekBarChangedListener 中没有触发任何事件。我还有一个 Im
我有一个 HorizontalScrollView 作为 ListView 的一个项目。每个 HorizontalScrollView 中都有可点击的图像。水平 ScrollView 也应该有
我的结构是这样的: .... 我在 cardview 元素上有一个 onClick/onTouchL
我有两个 TextView,我只想为 TextView 设置 setOnTouchListener。我找到了 this SO answer并按照此答案中的说明进行操作,但我无法解决问题。我正在使用 G
我是一名优秀的程序员,十分优秀!