我已经为3个应用程序创建了两个带有共享代码和资源的android库项目.其中一个库(我称之为库A)具有由所有3个应用程序共享的代码和资源,另一个库具有仅由三个中的两个共享的代码和资源(让我们称之为库B).
所以我让库B依赖于A.我遇到的问题是依赖于库B的两个应用程序.当启动第一个Activity时,我尝试访问库B中定义的xml布局中的元素时得到NoSuchFieldErrors或NullPointerExceptions似乎它无法从工程师B中的超级类中找到资源.我创建了一个小例子来重现问题.
在图书馆A:
AActivity.java:
public class AActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
doStuff();
}
protected void doStuff() {
}
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml中:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testlib"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="16" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.testliba.AActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
在图书馆B中:
BActivity.java:
public class BActivity extends AActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main_b);
super.onCreate(savedInstanceState);
AlertDialog alertDialog = new …Run Code Online (Sandbox Code Playgroud) 我注意到我的应用程序中的所有图像似乎都比原件小.例如.
我把图像放在这样的活动上:
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/ic_search_dark"
/>
Run Code Online (Sandbox Code Playgroud)
我从结果中截取屏幕截图并将图像测量为25x25:
http://petromi.com/get/86b23cdb63.png
但它的实际尺寸是28x28:
http://petromi.com/get/fd68913104.png
图像已放置到drawables-hdpi文件夹中.设备是1280x800平板电脑.我已将其显示指标记录如下:
Log.d("Screen (%s, %s) - [%s, %s] [%s]", dm.widthPixels, dm.heightPixels, dm.xdpi, dm.ydpi, dm.densityDpi);
Run Code Online (Sandbox Code Playgroud)
我得到了:
Screen (1280, 736) - [160.0, 160.15764] [213]
Screen (800, 1216) - [160.0, 160.15764] [213]
Run Code Online (Sandbox Code Playgroud)
(用于肖像和风景)
我很惊讶Android在hdpi设备上从drawable-hdpi缩放图像.可以吗?如果是的话,你能给我一个描述这些规则的链接吗?
我想知道Android中是否有任何方法可以ImageView动态设置图像tag.
理想情况下会是这样的:
// image_view_style.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:tag="1"
android:drawable="@drawable/image_for_tag_1"/>
<item android:tag="2"
android:drawable="@drawable/image_for_tag_2"/>
<item android:tag="3"
android:drawable="@drawable/image_for_tag_3"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
而简单地调用ImageView的setTag()与我想要的价值的方法.
我试过这个,但它不起作用.有没有干净的方式做在资源文件中的图像选择(的东西比别的state_selected,state_pressed等)?
我想以编程方式设置ImageView,将本地资源的名称作为String传递.
通过这种方式清楚地识别出可绘制的内容
R.drawable.mydrawable_name
Run Code Online (Sandbox Code Playgroud)
如果不在条件开关中映射所有内容,我该如何解决此问题?
我想避免这种形式的东西
if(myString.equal"stringname_1"){
myImageview.setImageResource( R.drawable.stringname_1);
}
else if(myString.equal"stringname_1")....
etc
Run Code Online (Sandbox Code Playgroud) 使用java for Android,我遇到了一个问题:
for(int a = 0; a < 26; a++){
textViewArray[a] = (TextView) findViewById(R.id.(alphabet[a]));
}
Run Code Online (Sandbox Code Playgroud)
我在xml文件中有26个TextView,其中包含ID A,B,C,D,... ZI需要以上内容才能成为R.id.A,R.id.B,R.id.C,...... R .id.Z运行时.以上是我的尝试之一,由于显而易见的原因不起作用.我想过要用
int[26] = new int[]{R.id.A, R.id.B, R.id.C .... R.id.Z};
Run Code Online (Sandbox Code Playgroud)
然后使用上面的那些数组条目for循环,但有一个更简洁的方法吗?可能将字符串("R.id."+(字母[a]))转换为代码并让它像往常一样运行以查找id?
PS字母表是包含上述示例中的A,B,C ... Z的字符串数组
在Xamarin中,我在strings.xml文件中有以下内容:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">AutoComplete</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="auto_complete">AutoComplete</string>
<string name="multi_auto_complete">Multi AutoComplete</string>
<string-array name="list_of_countries">
<item >USA</item>
<item >Uk</item>
<item >Canada</item>
<item >Australia</item>
<item >France</item>
<item >Italy</item>
<item >China</item>
<item >Japan</item>
<item >Spain</item>
</string-array>
</resources>
Run Code Online (Sandbox Code Playgroud)
如何将上述数据放入数组中?
这是我当前的代码(不起作用):
String[] countries = Resources.GetStringArray (list_of_countries);
Run Code Online (Sandbox Code Playgroud)
提前致谢
我正在开发一个Android应用程序,它使用一个库项目,该项目包含工作区中我的几个应用程序正在使用的常规方法.
在库项目中,我有一个类,其中包含一个显示警报对话框和一些Toast消息的方法.
我想要做的是使用库的 "res/values/strings.xml"值来表示那些警报对话框和Toast消息.关键是我当然希望根据当前用户的语言获取的值是相关的字符串值.这样,每当我在其他应用程序库中使用这些方法时,我就不必为应用程序的"values/strings.xml"中的每个应用程序重新翻译字符串.
提前致谢!
我测试了将ImageView设置为带有一些较小的png文件的动画列表并且没有问题,但是尝试将其用于RelativeLayout的背景,但会导致一些严重的滞后.当我使用16个png图像中的前5个时发生这种情况,我注意到如果由于内存越界而添加所有这些图像,它将无法运行.这是相关代码(onFinish()就在倒数计时器停止时):主要方法:
@Override
public void onFinish() {
count.setText("Go!");
playing = true;
startTime = System.currentTimeMillis();
score.setVisibility(View.VISIBLE);
//Start background animation
RelativeLayout rl = (RelativeLayout) findViewById(R.id.main);
rl.setBackgroundResource(R.drawable.background);
AnimationDrawable frameAnimation = (AnimationDrawable) rl.getBackground();
frameAnimation.start();
}
Run Code Online (Sandbox Code Playgroud)
布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/background"
tools:context=".MainActivity" >
Run Code Online (Sandbox Code Playgroud)
动画列表:
<?xml version="1.0" encoding="utf-8"?>
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<item android:drawable="@drawable/background_0" android:duration="50"/>
<item android:drawable="@drawable/background_1" android:duration="50" />
<item android:drawable="@drawable/background_1" android:duration="50" />
<item android:drawable="@drawable/background_2" android:duration="50" />
<item android:drawable="@drawable/background_3" android:duration="50" />
<item android:drawable="@drawable/background_4" android:duration="50" />
<item android:drawable="@drawable/background_5" android:duration="50" />
</animation-list> …Run Code Online (Sandbox Code Playgroud) animation android background android-animation android-resources
新的开发人员,希望有人可以帮助我,我看起来似乎无法找到我的问题的答案,我有我的所有textviews @strings但我想知道,我有一个textview,我的xml在android工作室有一个空值ie android:text="",我必须将其留空,因为这是显示字符串数组的结果.
所以我的问题是如何@string在空的时候将它添加到值?抱歉这个noobish问题,但我找不到我的问题的答案!
谢谢
当我使用aapt comandline为新创建的android项目生成.R文件时,它表明
No resource identifier found for attribute 'layout_constraintLeft_toLeftOf' in package 'com.test.androidpack'
那么,如何在aapt命令行中包含约束布局?
我的命令行是如下:
aapt package -f ^
-M C:\Users\Administrator\Desktop\test\AndoidPack\app\src\main\AndroidManifest.xml ^
-I D:\Android\Sdk\platforms\android-27\android.jar ^
-S C:\Users\Administrator\Desktop\test\AndoidPack\app\src\main\res ^
-J gen ^
-m
我试图添加-I xxxx\constraint-layout-1.1.1.aar,-j constraint-layout-1.1.1.aar所有失败