我正在构建一个应用程序,其中我有一个带有imageview和textview的列表视图,当我点击列表项时,我想将名称和图像传递给另一个活动。
我已设法做到这一点,但当我在其他活动中传递图像时,图像看起来像拉伸。如何解决这个问题?
我使用Android Asset Studio将我下载的图片制作成各种尺寸。
在列表视图中,图像看起来很好,但在另一个活动中,图像看起来很拉伸。
这是我的代码:
ListView lv = (ListView) findViewById(R.id.listView);
ArrayAdapter<ListaAdapterNext> adapter = new MySpecialAdapter();
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(NextActivity.this, ListItemActivity.class);
intent.putExtra("name", skonakia.get(position).getItemNextName().toString());
intent.putExtra("icon", skonakia.get(position).getImageNextId());
intent.putExtra("usage", skonakia.get(position).getItemUsage());
intent.putExtra("description", skonakia.get(position).getItemDescription());
startActivity(intent);
}
});
这里我将drawable id发送到另一个活动
这是我收到它们的方式:
TextView tv = (TextView)findViewById(R.id.description);
TextView usage = (TextView)findViewById(R.id.usage);
String fetchedText = getIntent().getStringExtra("name");
String fetchedDescription = getIntent().getStringExtra("description");
String fetchedUsage = getIntent().getStringExtra("usage");
ImageView iv = (ImageView)findViewById(R.id.imageViewListItem);
Drawable image = getResources().getDrawable(getIntent().getIntExtra("icon", -1));
iv.setImageDrawable(image);
tv.setText(fetchedDescription);
usage.setText(fetchedUsage);
getActionBar().setTitle(fetchedText);
以下是我用于listview的2个布局,以及当有人点击listitem时的其他活动
ListView布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textViewListItem"
android:layout_marginTop="15dp"
android:layout_marginLeft="10dp"
android:layout_gravity="center_horizontal" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="-40dp"
android:id="@+id/imageView"
android:src="@drawable/ic_app" />
</LinearLayout>
ListItemClicked布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.kostas.myapplication.ListItemActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:weightSum="1">
<ImageView
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/imageViewListItem"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:src="@drawable/ic_launcher" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/description"
android:id="@+id/textView" />
<TextView
android:id="@+id/description"
android:text="@string/hello_world"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp" />
<View
android:id="@+id/view1"
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_marginTop="20dp"
android:layout_alignParentLeft="true"
android:background="#000" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/usage"
android:id="@+id/textView2"
android:layout_marginTop="20dp"
android:layout_marginBottom="-15dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/usage"
android:layout_marginTop="25dp" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/buy"
android:id="@+id/buyButton"
android:layout_marginTop="50dp" />
</LinearLayout>
</ScrollView>
</RelativeLayout>
答案 0 :(得分:2)
注意:在JELLY_BEAN之前,此功能无法正确检索 这里传递的资源ID的最终配置密度是 另一个Drawable资源的别名。这意味着如果密度 别名资源的配置与实际不同 资源,返回的Drawable的密度不正确, 导致缩放不良。要解决这个问题,您可以改为 通过TypedArray.getDrawable检索Drawable。使用 Context.obtainStyledAttributes包含一个包含资源的数组 创建TypedArray的感兴趣的ID。
这可能是你的问题吗?
答案 1 :(得分:2)
为什么不将drawable转换为bytearray将bytearray传递给intent并通过put然后得到你的drawable