12 Aralık 2011, PAZARTESİ
Denetim yükseklik kesiliyor.
Bir denetim içinde 8 öğeleri görüntülemek için çalışıyorum. Ne yazık ki denetim yüksekliği sadece ilk satır ve ikinci küçük bir kısmını göstermektedir, bu yüzden her zaman çok az.
android:layout_height="300dp"
ayar çalışmasını sağlıyor. wrap_content
fill_parent
görünüşe göre değil.
Kılavuz benim görüşüm:
<GridView
android:id="@ id/myId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:horizontalSpacing="2dp"
android:isScrollContainer="false"
android:numColumns="4"
android:stretchMode="columnWidth"
android:verticalSpacing="20dp" />
Eşyalar benim kaynak:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:minHeight="?android:attr/listPreferredItemHeight" >
<ImageView
android:id="@ id/appItemIcon"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_dialog_info"
android:scaleType="center" />
<TextView
android:id="@ id/appItemText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My long application name"
android:gravity="center_horizontal"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
Sorun düşey boşluk eksikliği ile ilgili gibi görünmüyor.
Ne yapabilirim ?
CEVAP
13 Aralık 2011, Salı
(Çok) uzun araştırmalardan sonra, the excellent answer of Neil Traft üzerinde tökezledi.
Uyum GridView
için yaptığı iş çok kolay oldu.
ExpandableHeightGridView.java:
package com.example;
public class ExpandableHeightGridView extends GridView
{
boolean expanded = false;
public ExpandableHeightGridView(Context context)
{
super(context);
}
public ExpandableHeightGridView(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public ExpandableHeightGridView(Context context, AttributeSet attrs,
int defStyle)
{
super(context, attrs, defStyle);
}
public boolean isExpanded()
{
return expanded;
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
// HACK! TAKE THAT ANDROID!
if (isExpanded())
{
// Calculate entire height by providing a very large height hint.
// View.MEASURED_SIZE_MASK represents the largest height possible.
int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
}
else
{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
public void setExpanded(boolean expanded)
{
this.expanded = expanded;
}
}
Bu gibi: düzen vardır
<com.example.ExpandableHeightGridView
android:id="@ id/myId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:horizontalSpacing="2dp"
android:isScrollContainer="false"
android:numColumns="4"
android:stretchMode="columnWidth"
android:verticalSpacing="20dp" />
Sadece genişletmek için sormak istiyorum son olarak:
mAppsGrid = (ExpandableHeightGridView) findViewById(R.id.myId);
mAppsGrid.setExpanded(true);
Bunu Paylaş:
changelog / denetim veritabanı tablosu...
Görüntü Yükseklik ve Genişlik değerler...
İframe API YouTube: nasıl'ın bu i...
ASP.NET Denetim Olarak CommandArgument...
Seçmek için Hangi tekrarlayıcı, Liste ...