我想在Android中设置图片来源,
XML:
<ImageView
android:layout_width="200dp"
android:layout_height="300dp"
android:id="@+id/main"
android:src="@drawable/malayali"
android:layout_marginTop="100dp"
android:layout_marginLeft="80dp"
/>
Java:
public class MainActivity extends ActionBarActivity {
public SharedPreferences exactPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
exactPreferences = getSharedPreferences("details",MODE_PRIVATE);
getSupportActionBar().hide();
new RetriveIcon().execute(); //Api Calling & Storing value in SharedPreference
String value = exactPreferences.getString("main_url",null);
Log.i("from exactpreference",value); // Working fine !!! (http://www.exampple.com/storage/images/filename.jpeg)
ImageView banner = (ImageView)findViewById(R.id.main);
banner.setImageDrawable(getResources().getDrawable(R.drawable.value));
setContentView(R.layout.activity_main);
}
}
androidStudio在下面的值行中显示错误为红色。
banner.setImageDrawable(getResources().getDrawable(R.drawable.value));
ERROR:
Cannot resolve symbol 'value'
如何解决此错误?
答案 0 :(得分:2)
如果您正在处理Resources
文件夹中的可绘制名称,那么您的问题就是其中一个选项: -
1)您的资源中没有drawable
值。
确保它存在于资源文件夹中。
2)您在R
中导入了错误的activity
确保您导入的应用程序R
而不是Android应用程序。
如果您使用的是图片的直接网址。我建议您使用Universal Lazy Loader第三方。您所要做的就是传递图像直接URL和ImageView
,它将为您完成工作。
在Gradle
文件&#34;模块:应用&#34;
dependencies {
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
....
}
答案 1 :(得分:1)
试试这个简单的代码
ImageView banner = (ImageView)findViewById(R.id.main);
banner.setBackgroundResource(R.drawable.value);
但是图片名称必须是值并存储在可绘制文件夹中。
答案 2 :(得分:1)
您是否尝试从可绘制文件夹加载图像或从Internet下载图像? 这样:
banner.setImageDrawable(getResources().getDrawable(R.drawable.value));
如果您的某个可绘制文件夹中有value.png文件,则可以正常工作。如果您尝试从网络加载图像(例如:http://www.exampple.com/storage/images/filename.jpeg),您需要先下载它并将位图设置为ImageView源。有很多第三方图书馆这样做。看看Picasso:
Picasso.with(this).load(value).into(banner);
编辑:
为了添加Picasso,您需要更新build.gradle
文件(引用模块而不是项目的文件)。您应该有这样的部分:
dependencies {
...
}
您需要在其中添加此行:
compile 'com.squareup.picasso:picasso:2.5.2'
答案 3 :(得分:0)
试试这个:
String uri = "@drawable/myresource.png";
int imageResource = getResources().getIdentifier(uri, null, getPackageName());
imageview= (ImageView)findViewById(R.id.imageView);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);
注意:这是示例代码。
答案 4 :(得分:0)
您想要使用在线图像文件设置imageview的背景。您可以在项目中使用this example。使用这个很容易。
同样在您的代码中,您应该在从上面的链接添加类后更改一些行:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
exactPreferences = getSharedPreferences("details",MODE_PRIVATE);
getSupportActionBar().hide();
new RetriveIcon().execute(); //Api Calling & Storing value in SharedPreference
String value = exactPreferences.getString("main_url",null);
Log.i("from exactpreference",value); // Working fine !!! (http://www.exampple.com/storage/images/filename.jpeg)
// ImageLoader class instance
ImageLoader imgLoader = new ImageLoader(getApplicationContext());
ImageView banner = (ImageView)findViewById(R.id.main);
imgLoader.DisplayImage(value, 0, banner);
}
祝你好运。