- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发数独应用程序。布局为 9x9 GridView。每个 GridView 包含 9 个由 customAdapter 提供的 Textview。我想让 9 个 TextView 填充每个 GridView 的高度。怎么办?
这就是我现在拥有的
这是 myGridAdapter:
public class myGridAdapter extends BaseAdapter {
private Context context;
private String[] mobileValues;
public myGridAdapter(MainActivity mainActivity, String[] arrayEmpty) {
this.context = mainActivity;
this.mobileValues = arrayEmpty;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
// get layout from text_item.xml
gridView = inflater.inflate(R.layout.text_item, null);
// set value into textview
TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);
textView.setText(mobileValues[position]);
} else {
gridView = (View) convertView;
}
return gridView;
}
.....
}
这是每个文本项的 XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/grid_item_label"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="@drawable/cell_shape"
android:text="@string/_1"
tools:ignore="InefficientWeight"
android:textSize="12sp" >
</TextView>
</LinearLayout>
这是每个 TextView 的形状
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<solid android:color="#FFFFFF"/>
<stroke android:width="1dp" android:color="#777777" />
</shape>
我希望我的 Gridview 像这样
应用 bakriOnFire 的第一个答案后
最佳答案
您可以将在 GridView 的适配器中膨胀的 TextView 的每个 LinearLayout 的高度设置为 screenHeight/3。
在 textView 的 xml 膨胀后的 getView 中,将膨胀后的 View 转换为 LinearLayout 并将其高度设置为:
LayoutInflater li = getLayoutInflater();
LinearLayout ll = (LinearLayout) li.inflate(R.layout.menu_items, null);
int screenHeight = ((Activity) context).getWindowManager()
.getDefaultDisplay().getHeight();
ll.setMinimumHeight(screenHeight/3);
编辑
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
text_item.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/grid_item_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
tools:ignore="InefficientWeight"
android:padding="0dp"
android:textSize="12sp" >
</TextView>
</LinearLayout>
主 Activity .java
public class MainActivity extends Activity {
String[] str = { "1", "2", "3", "1", "2", "3", "1", "2", "3" ,
"1", "2", "3", "1", "2", "3", "1", "2", "3" ,
"1", "2", "3", "1", "2", "3", "1", "2", "3" ,
"1", "2", "3", "1", "2", "3", "1", "2", "3" ,
"1", "2", "3", "1", "2", "3", "1", "2", "3" ,
"1", "2", "3", "1", "2", "3", "1", "2", "3" ,
"1", "2", "3", "1", "2", "3", "1", "2", "3" ,
"1", "2", "3", "1", "2", "3", "1", "2", "3" ,
"1", "2", "3", "1", "2", "3", "1", "2", "3" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
GridView gridView = (GridView) findViewById(R.id.gridView1);
gridView.setAdapter(new myGridAdapter(this, str));
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
}
});
}
public class myGridAdapter extends BaseAdapter {
private Context context;
private String[] mobileValues;
public myGridAdapter(MainActivity mainActivity, String[] arrayEmpty) {
this.context = mainActivity;
this.mobileValues = arrayEmpty;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout gridView;
if (convertView == null) {
// get layout from text_item.xml
gridView = (LinearLayout)inflater.inflate(R.layout.text_item, null);
int screenHeight = ((Activity) context).getWindowManager()
.getDefaultDisplay().getHeight();
gridView.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.MATCH_PARENT, screenHeight/9));
//gridView.setMinimumHeight(screenHeight/9);
// set value into textview
TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);
textView.setText(mobileValues[position]);
} else {
gridView = (LinearLayout) convertView;
}
return gridView;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mobileValues.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
}
}
在 getView 中我所做的是将 text_item.xml 膨胀 9x9 次,其中我动态地将 text_item 的布局高度设置为 screenHeight/9。让我知道它是否适合您。
编辑2
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<GridView
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:numColumns="9"
android:padding="0dp"
android:background="#000000"
android:horizontalSpacing="3dp"
android:verticalSpacing="3dp"
android:stretchMode="columnWidth" >
</GridView>
</LinearLayout>
text_item.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:background="#FFFFFF"
android:orientation="vertical" >
<TextView
android:id="@+id/grid_item_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
tools:ignore="InefficientWeight"
android:padding="0dp"
android:textSize="12sp" >
</TextView>
</LinearLayout>
关于android - 如何让customAdapter填充gridview高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16398318/
问题是我正在尝试更新 ListView 中的所有按钮,按钮在我编写的 CustomAdapter 中,但按钮没有被更新。所以我的想法是更改 ListView 中所有按钮的文本并在单击按钮后显示计时器,
我正在尝试使用自定义适配器创建卡片 View 列表。我在单独的 .xml 文件中定义了单行列表的布局,其中包含卡片 View 和 ImageView / TextView 。我正在使用自定义 srrs
我是 Android Studio 和一般编码的新手,我正在尝试显示带有颜色图像和颜色名称的自定义 ListView。我使用了一个自定义适配器来使用两个包含可绘制图像颜色和名称字符串的数组来扩展 Vi
这个问题已经有答案了: What is a NullPointerException, and how do I fix it? (12 个回答) 已关闭 7 年前。 public class Jso
所以我在特定行上得到这个 ClassCastException: Java: private class MyArrayAdapter extends ArrayAdapter // My custo
我创建了一个自定义适配器以将我的元素发送到我的适配器类。 我的项目: public ItemAcompanhe(String dataPar, String cabecalhoPar, Strin
所以这里是我的问题的总结。我正在创建一个测试应用程序只是为了提高我在 android 方面的技能,并且我创建了一个列出公交时刻表的特定 Activity 。所以基本上,整个页面只显示每次旅行的旅行#、
每次向上或向下滚动时,我的 CustomAdapter 中的 getView() 方法都会被调用。 @Override public View getView(int position, View c
这是我用过的教程:http://www.tutorialsbuzz.com/2014/08/filter-custom-listviewbaseadapter.html 我为它实现了一个onItemC
我正在尝试构建一个 ArrayAdapter,允许用户访问链接到互联网、谷歌地图等的各个 TextView 字段。我无法解决错误状态为 Cannot resolve method 'startActi
我在这里陷入困境,我想将 OnItemClickListener 集成到我的 CustomAdapter 中,因此当单击某个项目时,它会显示一些消息或其他内容。但我不确定在哪里设置它。我看过很多教程和
我有一个自定义 TextView,我在自定义 GridView 适配器中使用它。自定义 TextView 使用自定义字体进行翻译。这在默认安装了语言环境的设备中效果相当好。 但是,在未安装该语言的设备
在我的应用程序中,我有 ListView,它由我的 CustomAdapter(即 ArrayAdapter)设置。 CustomAdapter 在其中实现了 ViewHolder,它引用了我的 Cu
所以我潜伏了一段时间,试图找到这个问题的答案。我在探洞。我需要一双全新的眼睛。我的 CustomAdapter 中的 View getView 未被调用。 public class User_List
我看过很多关于不同 CustomAdapter 的演示,但是这两个演示都没有展示我们如何在适配器内部实际获取我们正在使用适配器的 Activity 。现在我正在为适配器使用这种方法 private A
这是我完成的 android studio 项目编码:我知道我犯了多个错误,但在哪里??我是新手 这是我的 MainActivity 类: public class MainActivity exte
我想创建 ListView使用扩展 BaseAdapter 的 CustomAdapter .我有CustomAdapter(Context context, List> dataList) . 如何
我正在为 ListView 扩充两种不同的布局。一切正常,直到我开始向下滚动,开始随机应用 2 种不同的布局。我在这里遵循了其他示例,但我无法使其正常工作。有什么建议吗? public class C
我有一个 Fragment,使用 CustomAdapter(extending BaseAdapter) 加载了 GridView。数据是从服务器检索的,因此,一旦下载完成,我将尝试在适配器上调用
我是 Android Studios 的新手,我无法从我的 CustomAdapter 类中调用新 Activity 。在该应用中,用户应该单击 ListView 中的文本并打开一个显示联系人各自详细
我是一名优秀的程序员,十分优秀!