我正在开发Android应用程序。我在其中一个显示两个图像视图和文本视图的活动中使用了Listview。视图应如下所示,在大屏幕上看起来很好,但在小屏幕上占用大部分空间。
Nexus 4屏幕:但如果您看到以下ss中的图像,如果textview更大,图像也不能正确对齐。
在小屏幕图像上获取大部分空间。它看起来很糟糕如下:
我希望它在布局方面保持一致。
以下是我的布局xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="100" >
<com.wallie.imagview.SquareImageView
android:id="@+id/categoryimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="10" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="80"
android:gravity="left"
android:orientation="vertical"
android:paddingLeft="10dp" >
<TextView
android:id="@+id/categorylistname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#000000"
android:textSize="20sp"
android:typeface="sans" />
<TextView
android:id="@+id/categorylistcount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#777777"
android:textSize="16sp"
android:typeface="sans" />
</LinearLayout>
<ImageView
android:id="@+id/categoryseeall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="10"
android:src="@drawable/see_all" />
</LinearLayout>
SquareImageView是我的自定义类,包含以下代码:
public class SquareImageView extends ImageView {
public SquareImageView(Context context) {
super(context);
}
public SquareImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
非常感谢帮助。
进行代码更改后,在较小的屏幕中显示
答案 0 :(得分:1)
请尝试这种方式,希望这有助于您解决问题。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<ImageView
android:id="@+id/categoryimage"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.30"
android:src="@drawable/ic_launcher"
android:scaleType="fitXY"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.60"
android:orientation="vertical"
android:padding="5dp">
<TextView
android:id="@+id/categorylistname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#ff0000"
android:textSize="20sp"
android:typeface="sans" />
<TextView
android:id="@+id/categorylistcount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#777777"
android:textSize="16sp"
android:typeface="sans" />
</LinearLayout>
<ImageView
android:id="@+id/categoryseeall"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:layout_weight="0.10"
android:src="@drawable/ic_launcher" />
</LinearLayout>
答案 1 :(得分:0)
如果你想要android:layout_weight
attr布局编辑10:80:10,那么
设置android:layout_width="0dp"
。
长表达:
layout_weight
将使用没有内容宽度的空格
因此,如果容器为800dp且layout_width
不是0dp
,则首先ImageView
正常布局(如imageview 400dp,文本300dp ...)然后再
单独的重量空间。
如果剩余空间为100dp,则将10:80:10
分隔为ImageView
,然后ImageView获得410dp。不好了!
是的,也许这次,wrap_content
<com.wallie.imagview.SquareImageView
android:id="@+id/categoryimage"
android:layout_width="0dp"
android:layout_height="match_parent"
android:scaleType="fitCenter" <---- this
android:src="@drawable/dummy_avatar"
android:layout_weight="10"/>
的{{1}}太大而且重量attr没有任何分割到空间。
如果您的ImageView出现错误,请更改ImageView:
{{1}}
答案 2 :(得分:0)
将onMeasure方法更改为
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(heightMeasureSpec, heightMeasureSpec);
}
设置重量时将布局宽度设置为0dp:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="100">
<com.wallie.imagview.SquareImageView
android:id="@+id/categoryimage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/dummy_avatar"
android:layout_weight="10"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="80"
android:gravity="left"
android:orientation="vertical"
android:paddingLeft="10dp">
<TextView
android:id="@+id/categorylistname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#000000"
android:textSize="20sp"
android:typeface="sans"/>
<TextView
android:id="@+id/categorylistcount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#777777"
android:textSize="16sp"
android:typeface="sans"/>
</LinearLayout>
<ImageView
android:id="@+id/categoryseeall"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="10"
android:src="@drawable/see_all"/>
</LinearLayout>