我做了CustomAdapter
以某种方式在GridView
中显示我的项目。在该CustomAdapter中,我覆盖了getView()
方法。问题是,我想将我的网格项的高度设置为等于它们的宽度,每个智能手机的宽度可能不同。我已经看到了一个解决方案,但这对我来说没有用(它说我必须覆盖自定义视图中的onChanged()方法)。无论如何,任何人都可以让我走上正确的道路来处理这个问题吗?
我的xml / .java文件的代码是:
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/backrepeat"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/horizontalLine"
android:layout_width="fill_parent"
android:layout_height="8dip"
android:background="#33c2bd" />
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gvLevelSelector"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/backrepeat"
android:columnWidth="100dp"
android:gravity="center"
android:horizontalSpacing="2dp"
android:numColumns="3"
android:stretchMode="columnWidth"
android:verticalSpacing="2dp" >
</GridView>
</LinearLayout>
item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#33c2bd">
<TextView
android:id="@+id/tvLevel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Test here" />
<TextView
android:id="@+id/tvLevelScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="15dip"
android:layout_below="@+id/tvLevel"
android:layout_centerHorizontal="true"
android:text="test2"/>
</RelativeLayout>
自定义适配器:
public class LevelSelectorAdapter extends ArrayAdapter<LevelSelectorItem> {
public LevelSelectorAdapter(Context C, List<LevelSelectorItem> Arr) {
super(C, R.layout.levelselector_item, Arr);
}
@Override
public View getView(int position, View v, ViewGroup parent) {
View mView = v;
if (mView == null) {
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = vi.inflate(R.layout.item, null);
}
TextView level = (TextView) mView.findViewById(R.id.tvLevel);
TextView levelScore = (TextView) mView.findViewById(R.id.tvLevelScore);
if (mView != null) {
level.setText(getItem(position).getLevel());
levelScore.setText("test");
}
return mView;
}
}
答案 0 :(得分:0)
使用资源并显示指标。 设置视图的布局参数。
您可以在onBindView期间执行此操作。
这是我使用的摘录:
LayoutInflater.from(getContext()).inflate(R.layout.activity_cocktails_cocktail_tile,this);
ConstraintLayout rootLayout = findViewById(R.id.cocktailTileRootLayout);
rootLayout.getLayoutParams().width = getContext().getResources().getDisplayMetrics().widthPixels/2;
rootLayout.getLayoutParams().height = getContext().getResources().getDisplayMetrics().widthPixels/2;