SharedPreferences有方法getAll,但它不返回任何条目,尽管存在一些键:
PreferenceManager.getDefaultSharedPreferences(this).contains("addNewAddress");
Run Code Online (Sandbox Code Playgroud)
返回true
Map<String, ?> keys=PreferenceManager.getDefaultSharedPreferences(this).getAll();
Run Code Online (Sandbox Code Playgroud)
返回空地图
怎么了?如何获取所有共享首选项的列表?
当我从网上下载项目时,有时它可以构建但不运行(XCode - >产品 - >运行被禁用,灰色).当我自己创建项目时,这永远不会发生.可能是什么问题呢?它是否与版本有某种联系?我是iOS开发新手,并从网上下载项目用于学习目的.遗憾的是,无法在模拟器上测试它们.
我有简单的布局,但我只能设置字符串标签.如何设置整数标记?
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="1"
android:src="@drawable/image" />
Run Code Online (Sandbox Code Playgroud)
UPDATE
我发现了如何在xml布局中设置Integer标签.我们需要在任何xml资源文件中指定一个整数变量.那看起来应该是这样的:
RES /值/ value.xml:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<integer name="int1">15</integer>
<integer name="int2">1</integer>
</resources>
Run Code Online (Sandbox Code Playgroud)
现在我们可以自由地使用"@ integer/int1"或"@ integer/int2"作为我们的xml小部件的标签,例如:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="@integer/int2"
android:src="@drawable/image" />
Run Code Online (Sandbox Code Playgroud)
但是,在我的情况下,我更喜欢以编程方式设置标签:)
我正试图在点击时移动按钮(带动画).我希望它在第一次点击时向下移动100个像素,在第二个点上移动100个像素,在第三个点上移动100个像素到底部,依此类推.我有简单的布局文件(main.xml):
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Press to begin animation" />
Run Code Online (Sandbox Code Playgroud)
我的发布活动如下:
public class TestActivity extends Activity {
public final String TAG="TestActivity";
boolean toTop=false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b=(Button)findViewById(R.id.button);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(TestActivity.this, "left="+v.getLeft()+"\nright="+v.getRight(), Toast.LENGTH_SHORT).show();
Animation translateAnimation;
if(toTop) translateAnimation=new TranslateAnimation(0, 0, 0, -100);
else translateAnimation=new TranslateAnimation(0, 0, 0, 100);
translateAnimation.setDuration(1000);
translateAnimation.setFillEnabled(true);
translateAnimation.setFillAfter(true);
v.startAnimation(translateAnimation);
toTop=!toTop;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
当我按下按钮时,我可以看到它移动到底部.但是当我第二次按它时,没有任何反应.我必须单击按钮的初始矩形才能再次开始动画.看起来按钮按预期绘制,但实际视图保持在同一位置.我想知道如何完全移动视图,而不仅仅是视觉部分.此外,我使用Toast.maketext.show来确保按钮的坐标不会因点击而改变.
我正在尝试使用更改主线程的优先级android.os.Process.setThreadPriority().我在优先级更改之前和之后都有日志消息,这里是代码:
public class TestActivity extends Activity {
public final String TAG="TestActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
int tid=(int)Thread.currentThread().getId();
Log.d(TAG,"priority before change = " + android.os.Process.getThreadPriority(tid));
Log.d(TAG,"priority before change = "+Thread.currentThread().getPriority());
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_DISPLAY);
Log.d(TAG,"priority after change = " + android.os.Process.getThreadPriority(tid));
Log.d(TAG,"priority after change = " + Thread.currentThread().getPriority());
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
priority before change (getThreadPriority) = 0
priority before change (currentThread().getPriority) = 5
priority after change (getThreadPriority) = 0
priority after change (currentThread().getPriority) = 5
Run Code Online (Sandbox Code Playgroud)
这意味着优先级没有改变,无论我用什么方法来评估它.
android.os.Process.THREAD_PRIORITY_DISPLAY = …
我想补充TextChangedListener到AutocompleteTextView.在TextChangedListener的afterTextChanged()我调用AsyncTask它加载从网络数据(活动开始时加载所有的数据是不是一种选择,因为列表可能会非常大,所以它成为只是交通的浪费).
AsyncTask的onPostExecute()看起来像这样(我用的ArrayAdapter):
@Override
protected void onPostExecute(ArrayList<Subregion> result)
{
super.onPostExecute(result);
if (result != null)
{
adapter.clear();
for (Iterator<Subregion> iterator = result.iterator(); iterator.hasNext();)
{
Subregion subregion = iterator.next();
adapter.add(subregion);
}
adapter.notifyDataSetChanged();
autocompleteTextView.showDropDown();
}
}
Run Code Online (Sandbox Code Playgroud)
Subregion是我的自定义对象与覆盖toString().我希望我的程序在用户开始输入时开始加载数据,并在收到和解析它们时立即显示结果.
autocompleteTextView.showDropDown()没有效果.onPostExecute()收到正确的数据列表,它们被添加到适配器,但showDropDown()不显示下拉列表.怎么了?
我在我的应用程序中创建了几种字体样式.
如何将这些样式添加到视图中? - 1)使用样式属性2)使用textAppearance.
使用样式不是一个选项,因为视图可能有其他属性(边距,填充,最小宽度等 - 我不能为视图指定2个样式),所以我需要单独指定与文本相关的属性,但android:textColor在这里不起作用:
styles.xml:
<style name="TextAppearance.baseText" parent="@android:style/TextAppearance">
<item name="android:textAppearance">?android:textAppearanceSmall</item>
<item name="android:typeface">sans</item>
<item name="android:textColor">@android:color/white</item>
<item name="android:textSize">15sp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
layout.xml:
<?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="65dp"
android:orientation="horizontal" >
<Button
android:id="@+id/backButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sometext"
android:textAppearance="@style/TextAppearance.baseText"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
为什么它不起作用?如何在textappearance中指定textcolor?
我的布局xml如下:
<SeekBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_margin="10dp"
android:gravity="center"
android:progressDrawable="@drawable/progressbar_drawable"
android:progress="50"
android:thumb="@drawable/progressbar_handle_selector"
android:layout_toLeftOf="@+id/showChat"
android:layout_toRightOf="@+id/play" />
Run Code Online (Sandbox Code Playgroud)
Seekbar的可绘制进度如下:
@ drawable / progressbar_drawable
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/background" android:drawable="@drawable/bg_progressbar_9patch"/>
<item android:id="@android:id/progress">
<clip>
<shape>
<gradient
android:angle="90"
android:endColor="#d9b546"
android:startColor="#cc520f" />
</shape>
</clip>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
结果,背景位图(白色的)与可绘制的进度条(橙色的)相比,高度不拉伸,并且仍然过低,下面是一个示例:

而且,在不同的屏幕上它看起来也不同:背景位图与可绘制进度相比具有不同的高度。例如(另一个屏幕):

我的问题是:为什么进度和背景可绘制对象(橙色和白色条纹)不总是相同的高度?如何使它们具有相同的高度?
更新
Png资源:

我希望我的应用程序可用于手机和平板电脑.手机和平板电脑版本的唯一区别是:在"手机"版本中,我的应用程序有按钮,可以拨打一定数量的电话.我的问题是:能够拨打电话我需要为清单文件添加权限 -
<uses-permission android:name="android.permission.CALL_PHONE" />
Run Code Online (Sandbox Code Playgroud)
此权限使应用程序与平板电脑不兼容.如果我删除了该权限,则应用无法在电话上启动呼叫.如何制作支持手机和平板电脑并允许通过手机拨打电话的应用?