我需要创建看起来像“订单”的界面。因此,将有标题数据,然后将有详细信息。我把它视为所有可滚动的屏幕。但我不确定绑定细节的最佳方法是什么。
我可以看到我的能力:
创建ListView并将标题放在第一行 - IMO UGLY代码。
创建ListActivity,将标题放在顶部,ListView放在下面 - 由于标题不会滚动,所以没有好处。
我不确定如何做,但想法是创建主要布局并将空的LinearLayout放在细节应该在哪里。然后创建另一个布局以获取详细信息(就像我对ListView一样)。但我会加载细节并手动给这些孩子充气,然后将它们注入我的LinearLayout。
那会有用吗?你还会怎么做呢?
谢谢!
答案 0 :(得分:1)
您可以使用addHeader方法向ListView添加标题,提供可以从其他XML扩展的自定义视图:ListView addHeader method
答案 1 :(得分:0)
最简单的解决方案是在TextView
内添加ListView
和RelativeLayout
。您实际上可以将Textivew
替换为您需要的任何View
(包括ViewGorup
)。
在本教程中了解如何实现它:http://developer.android.com/resources/tutorials/views/hello-relativelayout.html
并查看Romain Guy的帖子,了解LinearLayout
和RelativeLayout
之间的比较(以及一般的好建议):
http://android-developers.blogspot.com/2009/02/android-layout-tricks-1.html
http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html
http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-with.html
这是一种(非常简化的)创建可扩展LinearLayout
的方法。当然,您将添加一些更有趣的内容而不是按钮......
MyCustomControl.java
package com.aleadam.test;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MyCustomControl extends LinearLayout {
Context context;
Button upper, lower;
TextView tv;
public MyCustomControl(Context context) {
super(context);
this.context = context;
expandLayout();
}
public MyCustomControl(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
expandLayout();
}
private void expandLayout() {
setOrientation (VERTICAL);
LayoutParams lp0 = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
LayoutParams lp1 = new LayoutParams(
LayoutParams.WRAP_CONTENT, 40);
LayoutParams lp2 = new LayoutParams(
LayoutParams.WRAP_CONTENT, 200);
TextView tv = new TextView(context);
tv.setText("The title goes here");
upper = new Button(context);
upper.setText("Click to show the other button");
lower = new Button(context);
lower.setText("Click to hide this button");
lower.setVisibility(GONE);
upper.setOnClickListener(new OnClickListener () {
public void onClick (View v) {
lower.setVisibility(VISIBLE);
}
});
lower.setOnClickListener(new OnClickListener () {
public void onClick (View v) {
v.setVisibility(GONE);
}
});
this.addView(tv, lp0);
this.addView(upper, lp1);
this.addView(lower, lp2);
}
}
Test.java
public class Test extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
inflateLayout();
}
public void inflateLayout() {
ScrollView scr = new ScrollView (this);
LinearLayout ll = new LinearLayout (this);
ll.setOrientation(LinearLayout.VERTICAL);
ll.addView (new MyCustomControl (this));
ll.addView (new MyCustomControl (this));
ll.addView (new MyCustomControl (this));
ll.addView (new MyCustomControl (this));
scr.addView(ll);
setContentView (scr);
}
}
答案 2 :(得分:0)
LinearLayout _> ScrollView _> LinearLayout _/- TextView header
\- ListView w/ adapter