Я создаю приложение, которое позволяет пользователю добавлять подпись, рисуя ее на холсте.Из моего предыдущего исследования я решил использовать библиотеку, обнаруженную на Github, которая называется SignatureView .
Представление подписи работает нормально до тех пор, пока не будет включена прокрутка, на этом этапе прокруткавсе еще имеет место, когда пользователь рисует, то есть холст перемещается во время ввода.
В связи с этим я хотел бы отключить прокрутку, когда пользователь взаимодействует с представлением подписи.До сих пор я пытался поместить представление во вложенное представление прокрутки и несколько атрибутов xml, но ни один из них, похоже, не имеет никакого эффекта.
Файл XML макета (с опущенными несоответствующими представлениями)
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fitsSystemWindows="true"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.jordan.promise.fragments.EnterSignature"
android:configChanges="orientation|screenSize"
android:name=".MainActivity"
android:label="@string/app_name">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="56dp"
android:paddingLeft="24dp"
android:paddingRight="24dp">
<com.kyanogen.signatureview.SignatureView
xmlns:sign="http://schemas.android.com/apk/res-auto"
android:id="@+id/signature_view"
android:layout_width="fill_parent"
android:layout_height="200dp"
android:layout_weight="1"
sign:penSize="5dp"
sign:backgroundColor="#ffffff"
sign:penColor="#000000"
sign:enableSignature="true"/>
</ScrollView>
Методы OnCreate и OnCreateView (представление подписи в настоящее время больше нигде не используется)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_enter_signature, container, false);
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
String defaultValue = getResources().getString(R.string.error_name);
String firstName = sharedPref.getString(getString(R.string.user_first), defaultValue);
//Greet User and provide instructionsView for entering signature
helloFirst = view.findViewById(R.id.hello_first);
instructionsView = view.findViewById(R.id.sig_instructions);
String hello = getResources().getString(R.string.hello);
String instructions = getResources().getString(R.string.enter_signature_instruction);
helloFirst.setText(String.format("%s %s!", hello, firstName)); //Title/Welcome text
instructionsView.setText(instructions);
sigBtn = view.findViewById(R.id.signatureBtn);//Continue button, changes text if signature is present
isDirty = false; //Solves API bug were isDirty only detects if a gesture is taking place
//Signature Capture
clearSignature = view.findViewById(R.id.clearBtn);
clearSignature.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
signatureView.clearCanvas();
isDirty = false;
}
});
//Check That Signature Field is not Empty
thread = new Thread() {
@Override
public void run() {
try {
while(true) {
sleep(1000);
Log.i("handler" , "running");
if(signatureView.isDirty() || isDirty) {
sigBtn.setText(getResources().getString(R.string.accept_sig));
isDirty = true;
}
else {
sigBtn.setText(getResources().getString(R.string.decline_sig));
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
setHasOptionsMenu(true);
signatureView = view.findViewById(R.id.signature_view);
return view;
}
Заранее благодарю за любую помощь.Я надеюсь, что это имеет смысл, но, пожалуйста, дайте мне знать, если вам нужны какие-либо разъяснения или дополнительная информация.