我在显示剪切/复制/粘贴菜单时遇到问题。在 AutoCompleteTextView 中写入字符串后,在单词打开剪切/复制/粘贴菜单的第一个选择(长按)中。不幸的是,此菜单已从其原始位置错位。
有趣的是,当我单击左右选择指示器来更改单词的范围时,剪切/复制/粘贴菜单会自行呈现并更正其位置。现在可以单击剪切/粘贴/复制操作按钮。
我已尝试更改所有内容以找出导致此问题的原因,但没有任何更改。我认为某些东西会在错误的位置触发 android 的默认剪切/复制/粘贴菜单并进行裁剪。不幸的是我找不到它是什么。
欢迎任何建议。谢谢。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:installLocation="auto">
<uses-permission android:name="com.example.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<application
android:name="com.example.MainApplication"
android:hardwareAccelerated="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/ExampleTheme">
<activity
android:name="com.example.MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:launchMode="singleTask"
android:screenOrientation="sensorPortrait"
android:theme="@style/ExampleTheme"
android:windowSoftInputMode="adjustPan" />
<activity
android:name="com.example.SplashScreen"
android:launchMode="singleTop"
android:screenOrientation="sensorPortrait"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ExampleTheme" parent="Theme.AppCompat.Light">
<item name="android:editTextStyle">@style/Widget.EditText</item>
<item name="android:windowBackground">@color/app_bg</item>
<item name="android:listViewStyle">@style/TransparentListView</item>
<item name="buttonStyle">@style/ButtonStyle</item>
<item name="android:alertDialogStyle">@style/customDialogTheme</item>
<item name="android:alertDialogTheme">@style/customDialogTheme</item>
<item name="android:expandableListViewStyle">@style/TransparentExpandableListView</item>
<item name="android:spinnerStyle">@style/CustomSpinnerStyle</item>
<item name="android:dropDownSpinnerStyle">@style/CustomSpinnerStyle</item>
</style>
<style name="ButtonStyle" parent="Widget.AppCompat.Button">
<item name="android:textAllCaps">false</item>
</style>
<style name="Widget.EditText" parent="@android:style/Widget.EditText">
<item name="android:background">@drawable/input_area</item>
</style>
<style name="TransparentListView" parent="@android:style/Widget.ListView">
<item name="android:cacheColorHint">@color/transparent</item>
</style>
<style name="TransparentExpandableListView" parent="@android:style/Widget.ExpandableListView">
<item name="android:cacheColorHint">@color/transparent</item>
</style>
<style name="customDialogTheme" parent="android:Theme.Holo.Light.Dialog.NoActionBar">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:background">@color/transparent</item>
</style>
<style name="DialogFullScreenTheme" parent="android:Theme.Dialog">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:windowAnimationStyle">@style/BlurDialogAnimation</item>
<!-- No backgrounds, titles or window float -->
<item name="android:windowBackground">@null</item>
<item name="android:gravity">center</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
</style>
<style name="BlurDialogAnimation">
<item name="android:windowEnterAnimation">@anim/fadein</item>
<item name="android:windowExitAnimation">@anim/fadeout</item>
</style>
<style name="DialogFullScreenThemeHolo" parent="android:Theme.Holo.Light.Dialog">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:windowAnimationStyle">@style/BlurDialogAnimation</item>
<!-- No backgrounds, titles or window float -->
<item name="android:gravity">center</item>
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
</style>
<!-- Overwrite the ToggleButton style -->
<style name="Widget.Button.Toggle" parent="android:Widget">
<item name="android:background">@drawable/btn_toggle_bg</item>
<item name="android:textOn">ON</item>
<item name="android:textOff">OFF</item>
<item name="android:disabledAlpha">?android:attr/disabledAlpha</item>
</style>
</resources>
public class MyDialogFragment extends DialogFragment{
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog d = new Dialog(getActivityInstance(), R.style.DialogFullScreenTheme);
d.setContentView(R.layout.search_dialog_fragment);
actionSearchBarET = (AutoCompleteTextView) d.findViewById(R.id.actionSearchBoxACT);
actionBar = (RelativeLayout) d.findViewById(R.id.actionBar);
setupSearchBar();
actionSearchBarET.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
InputMethodManager imm = (InputMethodManager) ctx.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
} catch (Exception ignored) {}
}
});
actionSearchBarET.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionSearchBarET != null && actionSearchBarET.getText() != null && !actionSearchBarET.getText().toString().equalsIgnoreCase("")) {
searchWithKeyword(actionSearchBarET.getText().toString());
}
return true;
}
});
}
private void setupSearchBar() {
TypedValue tv = new TypedValue();
RelativeLayout.LayoutParams actionBarParams;
if(getActivityInstance().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
int actionBarHeight = TypedValue.complexToDimensionPixelOffset(tv.data, getActivityInstance().getResources().getDisplayMetrics());
if(actionBarHeight > 0) {
actionBarParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, actionBarHeight);
} else {
actionBarParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getActivityInstance().getResources().getDimensionPixelOffset( R.dimen.action_bar_default_height));
}
} else {
actionBarParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getActivityInstance().getResources().getDimensionPixelOffset(R.dimen.action_bar_default_height));
}
actionBar.setMinimumHeight((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, getResources().getDimension(R.dimen.action_bar_default_height), getResources().getDisplayMetrics()));
actionBar.setLayoutParams(actionBarParams);
}
}
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white"
android:paddingBottom="15dp">
<include
android:id="@+id/actionBar"
android:layout_alignParentTop="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/ab_search_and_textbutton" />
</RelativeLayout>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:paddingLeft="15dp">
<!-- Dummy item to prevent EditText from receiving focus -->
<LinearLayout
android:id="@+id/dummy"
android:layout_width="0dip"
android:layout_height="0dip"
android:focusable="true"
android:layout_alignParentRight="true"
android:focusableInTouchMode="true"
android:orientation="vertical"/>
<RelativeLayout
android:id="@+id/searchBarContainer"
android:layout_centerVertical="true"
android:minHeight="@dimen/searchbar_height"
android:background="@drawable/search_box_bg"
android:layout_gravity="center"
android:layout_toLeftOf="@+id/cancelButton"
android:layout_width="wrap_content"
android:layout_height="@dimen/searchbar_height">
<ImageView
android:id="@+id/searchIcon"
android:layout_marginLeft="15dp"
android:layout_centerVertical="true"
android:src="@drawable/search"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<AutoCompleteTextView
android:layout_toRightOf="@+id/searchIcon"
android:layout_marginLeft="3dp"
android:id="@+id/actionSearchBoxACT"
android:textSize="14dp"
android:inputType="textNoSuggestions"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="@string/search"
android:focusableInTouchMode="true"
android:focusable="true"
android:textColor="@color/textcolor_black"
android:layout_centerInParent="true"
android:background="@null"
android:completionThreshold="1"
android:imeOptions="actionSearch"
android:nextFocusLeft="@id/actionSearchBoxACT"
android:nextFocusUp="@id/actionSearchBoxACT"
android:paddingLeft="5dp"
android:singleLine="true">
<requestFocus />
</AutoCompleteTextView>
</RelativeLayout>
</RelativeLayout>
最佳答案
剪切/粘贴/复制菜单可能会受到您的主题 xml 的影响。 DialogFullScreenTheme 样式包含重力场。您可以删除该字段,但必须选中所有对话框 ui。
<style name="DialogFullScreenTheme" parent="android:Theme.Dialog">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:windowAnimationStyle">@style/BlurDialogAnimation</item>
<item name="android:windowBackground">@null</item>
<!-- Remove this line -->
<item name="android:gravity">center</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
</style>
关于android - onLongClick 时,AutoCompleteTextView 在剪切/复制/粘贴菜单上出现奇怪的裁剪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48537791/
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm
我想编写一个ruby脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"
有没有人用ruby解决这个问题:假设我们有:a=8.1999999我们想将它四舍五入为2位小数,即8.20,然后乘以1,000,000得到8,200,000我们是这样做的;(a.round(2)*1000000).to_i但是我们得到的是8199999,为什么?奇怪的是,如果我们乘以1000、100000或10000000而不是1000000,我们会得到正确的结果。有人知道为什么吗?我们正在使用ruby1.9.2并尝试使用1.9.3。谢谢! 最佳答案 每当你在计算中得到时髦的数字时使用bigdecimalrequire'bi
下面的代码工作正常:person={:a=>:A,:b=>:B,:c=>:C}berson={:a=>:A1,:b=>:B1,:c=>:C1}kerson=person.merge(berson)do|key,oldv,newv|ifkey==:aoldvelsifkey==:bnewvelsekeyendendputskerson.inspect但是如果我在“ifblock”中添加return,我会得到一个错误:person={:a=>:A,:b=>:B,:c=>:C}berson={:a=>:A1,:b=>:B1,:c=>:C1}kerson=person.merge(berson
之前有人问过这个问题,我发现了以下clip关于如何一次设置一个类对象的所有属性,但由于批量分配保护,这在Rails中是不可能的。(例如,您不能Object.attributes={})有没有一种很好的方法可以将一个类的属性合并到另一个类中?object1.attributes=object2.attributes.inject({}){|h,(k,v)|h[k]=vifObjectModel.column_names.include?(k);h}谢谢。 最佳答案 利用assign_attributes使用:without_prote
我正在使用macos,我想使用ruby驱动程序连接到sqlserver。我想使用tiny_tds,但它给出了缺少free_tds的错误,但它已经安装了。怎么能过这个?~brewinstallfreetdsWarning:freetds-0.91.112alreadyinstalled~sudogeminstalltiny_tdsBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtiny_tds:ERROR:Failedtobuildgemnativeextension.完整日志如下:/System
我正在尝试在Ruby中创建一个菜单,以便根据用户输入的内容,取决于调用的类。然后在这种情况下它将返回到“Main”或类“Options”。我希望有人能帮助我。这是我的代码。modulePhysicsG=21C=20000Pi=3.14D=100endclassOptionsputs"Pleaseselect1forAccelerationand2forEnergy."option=gets()ifoption==1thenputs"AccelCalc"#ThisisthebitthatneedstodirecttheusertotheclassAccelCalcelseputs"Ene
我有以下haml:9%strongAskedby:10=link_to@user.full_name,user_path(@user)11.small="(#{@question.created_at.strftime("%B%d,%Y")})"这当前将链接和日期放在不同的行上,当它看起来像“链接(日期)”并且日期的类跨度为小...... 最佳答案 您的代码将生成类似这样的html:Askedby:UsernameApril26,2011当您使用类似.small的东西(即使用点而不指定元素类型)时,haml会创建一个implicit
defreverse(ary)result=[]forresult[0,0]inaryendresultendassert_equal["baz","bar","foo"],reverse(["foo","bar","baz"])这行得通,我想了解原因。有什么解释吗? 最佳答案 如果我使用each而不是for/in重写它,它看起来像这样:defreverse(ary)result=[]#forresult[0,0]inaryary.eachdo|item|result[0,0]=itemendresultendforainb基本上就