【发布时间】:2018-04-28 03:34:12
【问题描述】:
现在我有了这样的布局。如你所见,ui里面有三样东西
- 放大控制
- 重叠的文字
- 可移动元素
现在我已经成功实现了整个约束布局的可移动功能和放大、缩小控制。但是,由于文本重叠,我想滚动视图。滚动事件似乎与我的自定义可缩放事件冲突。 我想实现滚动事件以向下滚动重叠的文本,但不知道如何执行此操作。
感谢任何建议或评论。
layout.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.mycompany.newmobileclient.ui.plant_inventory.PlantInventoryActivity">
<ZoomControls
android:id="@+id/simpleZoomControl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_centerHorizontal="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<android.support.constraint.ConstraintLayout
android:id="@+id/plantInventory_container"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:background="@color/worklist_divider_bg"
app:layout_constraintBottom_toTopOf="@+id/simpleZoomControl"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/plantInventory_content_title">
<TextView
android:id="@+id/textView133"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/sample_plantinventory2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
<TextView
android:id="@+id/plantInventory_content_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="TextView"
tools:text="Plant Inv Activity1 & Activity2"
android:padding="4dp"
style="@style/worklist_label"
android:background="@color/worklist_divider_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
字符串.xml
<string name="sample_plantinventory2">
Compatible Product List\n
Code Description\n
----- -----------\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
1234 MyCompany ABC1234 HKU (4GE)+ Dickson ABC123 DSL Wi-Fi\n
</string>
PlantInventoryActivity.java
public class PlantInventoryActivity extends BaseActivity {
private final float SCALE_RATIO = 0.25f;
private final float MAX_SCALE_RATIO = 2f;
private final float MIN_SCALE_RATIO = 1f;
private ConstraintLayout plantInventoryContainer;
private TextView plantInventory_content_title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_plant_inventory);
plantInventory_content_title = findViewById(R.id.plantInventory_content_title);
plantInventoryContainer = findViewById(R.id.plantInventory_container);
ZoomControls zoomControls = findViewById(R.id.simpleZoomControl);
zoomControls.setOnZoomInClickListener(v -> {
if (plantInventoryContainer.getScaleX() < MAX_SCALE_RATIO) {
plantInventoryContainer.setScaleX(plantInventoryContainer.getScaleX() + SCALE_RATIO);
plantInventoryContainer.setScaleY(plantInventoryContainer.getScaleY() + SCALE_RATIO);
}
});
zoomControls.setOnZoomOutClickListener(v -> {
if (plantInventoryContainer.getScaleX() > MIN_SCALE_RATIO) {
plantInventoryContainer.setScaleX(plantInventoryContainer.getScaleX() - SCALE_RATIO);
plantInventoryContainer.setScaleY(plantInventoryContainer.getScaleY() - SCALE_RATIO);
}
});
zoomControls.bringToFront();
plantInventory_content_title.bringToFront();
plantInventoryContainer.setOnTouchListener(new ZoomableListener());
}
}
ZoomableListener.java
public class ZoomableListener implements OnTouchListener {
float x = 0;
float y = 0;
float dx = 0;
float dy = 0;
@Override
public boolean onTouch(View myView, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
x = event.getX();
y = event.getY();
dx = x - myView.getX();
dy = y - myView.getY();
}
break;
case MotionEvent.ACTION_MOVE: {
myView.setX(event.getX() - dx);
myView.setY(event.getY() - dy);
}
break;
case MotionEvent.ACTION_UP: {
//your stuff
}
}
return true;
}
}
【问题讨论】:
-
把你的约束布局放在滚动视图中。
-
我试过了。但是滚动事件与我的触摸监听器冲突,它会导致用户体验不佳
-
如果您找到了解决方案,请告诉我。我也有类似的问题。
-
我尝试使用两个滚动视图和线性布局。由于用户体验和 UI 性能,我不能说这是一个好主意。感谢任何好的建议和建议。
标签: java android xml android-constraintlayout