Java Android:在图像顶部设置文本和多个图像无法正常工作。
我正在开发一个Android应用程序,其中我有一个静态设置的部分图像。现在,为了进行尝试,我在framelayout中使用GridView。但当我这样做时,我无法正确地看到字母表,因为我认为它们将从屏幕上消失,并且该部分的文本不再可见。我不知道我做错了什么。任何帮助都很好 activity_group_section.xml:Java Android:在图像顶部设置文本和多个图像无法正常工作。,java,android,android-framelayout,Java,Android,Android Framelayout,我正在开发一个Android应用程序,其中我有一个静态设置的部分图像。现在,为了进行尝试,我在framelayout中使用GridView。但当我这样做时,我无法正确地看到字母表,因为我认为它们将从屏幕上消失,并且该部分的文本不再可见。我不知道我做错了什么。任何帮助都很好 activity_group_section.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:/
<?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:orientation="horizontal"
android:padding="5dip" >
<FrameLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="1">
<ImageView
android:id="@+id/sectionimage"
android:layout_width="386dp"
android:layout_height="200dp"
android:scaleType="fitXY"
android:padding="5dp"
android:src="@drawable/sectionbackground"
/>
<TextView
android:id="@+id/sectionname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/textView"
android:visibility="visible"
android:gravity="center"
android:layout_gravity="center_horizontal" />
<GridView
android:id="@+id/grid_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"/>
</FrameLayout>
</RelativeLayout>
SectionLazyAdapter.java:
public class SectionLazyAdapter extends BaseAdapter{
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
GridView gridView;
static final String[] numbers = new String[] {
"A", "B", "C", "D", "E",
"F", "G", "H", "I", "J",
"K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z"};
public SectionLazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.activity_group_section, null);
TextView sectionName = (TextView)vi.findViewById(R.id.sectionname); // title
GridView gridView = (GridView) vi.findViewById(R.id.grid_view);
HashMap<String, String> sectionList = new HashMap<String, String>();
sectionList = data.get(position);
sectionName.setText(sectionList.get(GroupSectionActivity.msectionname));
ArrayAdapter<String> adapter = new ArrayAdapter<String>(activity,
android.R.layout.simple_list_item_1, numbers);
gridView.setAdapter(adapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
}
});
return vi;
}
}
公共类部分LazyAdapter扩展了BaseAdapter{
私人活动;
私有数组列表数据;
专用静态充气机=空;
GridView;
静态最终字符串[]编号=新字符串[]{
“A”、“B”、“C”、“D”、“E”,
“F”、“G”、“H”、“I”、“J”,
“K”、“L”、“M”、“N”、“O”,
“P”、“Q”、“R”、“S”、“T”,
“U”、“V”、“W”、“X”、“Y”、“Z”};
公共分区LazyAdapter(活动a,ArrayList d){
活动=a;
数据=d;
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
}
public int getCount(){
返回data.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图vi=转换视图;
if(convertView==null)
vi=充气机。充气(R.layout.activity\u group\u section,空);
TextView sectionName=(TextView)vi.findViewById(R.id.sectionName);//标题
GridView GridView=(GridView)vi.findviewbyd(R.id.grid\u视图);
HashMap sectionList=新建HashMap();
sectionList=data.get(位置);
sectionName.setText(sectionList.get(GroupSectionActivity.msectionname));
ArrayAdapter=新的ArrayAdapter(活动,
android.R.layout.simple_list_item_1,数字);
setAdapter(适配器);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id){
}
});
返回vi;
}
}
这是它的屏幕截图,我想看看图片里面的字母和图片下面部分的名称,但这不是正在发生的事情,图片也在外面
我认为这是XML文件中错误配置的问题。任何帮助都很好。框架布局没有用,所以你应该把它扔掉 将此行添加到节名textview:
android:layout_below="@id/sectionimage"
PS:不建议将可滚动视图放在另一个可滚动视图中,因为滚动时会遇到问题。发生这种情况的原因是您试图将GridView放在ListView中。
正如我看到的,您这样做是因为您想要一个剖切的GridView,我建议只使用一个这样做的库,如。Google“gridview with sections”如果你对它不满意,你会发现很多其他的库和问题(我使用了链接中的一个,并且很满意) 现在谈谈为什么你的方法不起作用。有很多原因使您很难使用这种方法
- ListView不能很好地处理其他可滚动组件(作为父组件或子组件)
- ListView为孩子提供他们想要的所有高度,就像ScrollView对其孩子所做的那样。GridView尚未为此做好准备,您需要为其强制一定的高度
- 在无限视图中使用AdapterView可以使视图渲染其所有子视图。这使得整个观点毫无意义
您可以尝试继续此路径,但我担心Android会对您不利。我应该使用哪种布局,以便在sectionimage中显示gridview的内容?NestedScrollView如何?我将开始研究它。你能给我举个例子,我是Android新手,尤其是UI编程新手,这让我抓狂。我看到他们提供了一个。我还看到我给你的图书馆已经停办了。它被一个更好的使用RecyclerView的版本所取代,这个版本也是。我不会编辑我的答案,因为原始库是GridView的直接替代品,但我强烈建议您使用您不应该再使用
fill\u parent
,它已被弃用。使用匹配父项
。