ScrollView中的Android LinearLayout
我尝试在滚动视图中获得线性布局,如下所示: 绿色空间应为包裹内容,红色空间应占据剩余空间 但这是我的结果: 这是我的代码:ScrollView中的Android LinearLayout,android,scrollview,android-linearlayout,Android,Scrollview,Android Linearlayout,我尝试在滚动视图中获得线性布局,如下所示: 绿色空间应为包裹内容,红色空间应占据剩余空间 但这是我的结果: 这是我的代码: foreach(Ele el : elements) {} LinearLayout layout = new LinearLayout(getActivity()); LayoutParams layout_parm = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTEN
foreach(Ele el : elements) {}
LinearLayout layout = new LinearLayout(getActivity());
LayoutParams layout_parm = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
layout.setOrientation(LinearLayout.HORIZONTAL);
layout.setLayoutParams(layout_parm);
TextView tv = new TextView(getActivity());
tv.setLayoutParams( new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1) );
tv.setBackgroundColor(getActivity().getResources().getColor((R.color.red)));
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
tv.setText("Name...");
tv.setPadding(0, 0, 0, getDP(5));
layout.addView(tv);
TextView iView = new TextView(getActivity());
iView.setText("OTO");
iView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
iView.setBackgroundColor(getActivity().getResources().getColor((R.color.green)));
iView.setLayoutParams( new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0) );
layout.addView(iView);
frg_layout.addView(layout);
}
我真糊涂!也许你能帮我找出我的失败。。。
谢谢大家!
父视图组:
<LinearLayout
android:id="@+id/frg_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:gravity="top"
android:orientation="vertical" />
您可以更改布局方向
LinearLayout layout = new LinearLayout(getActivity());
LayoutParams layout_parm = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(layout_parm);
在xml中使用此类型
<LinearLayout
android:id="@+id/frg_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/TextView1"
android:layout_width="250dp"
android:layout_height="60dp"/>
<TextView
android:id="@+id/textview2"
android:layout_width="250dp"
android:layout_height="60dp"
/>
</linearlayout>
我认为您基本上是对的,只需要一些小的调整:
for each(Ele el:elements){
LinearLayout layout = new LinearLayout(getActivity());
LayoutParams layout_parm = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
layout.setOrientation(LinearLayout.HORIZONTAL);
layout.setLayoutParams(layout_parm);
TextView tv = new TextView(getActivity());
//adjust the last number here to make the first block wider or larger as you want
tv.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 2));
tv.setBackgroundColor(getActivity().getResources().getColor((R.color.red)));
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
tv.setText("Name...");
tv.setPadding(0, 0, 0, getDP(5));
layout.addView(tv);
TextView iView = new TextView(getActivity());
iView.setText("OTO");
iView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
iView.setBackgroundColor(getActivity().getResources().getColor((R.color.green)));
//adjust your layout param to be a weight instead of wrap_content
iView.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT, 1));
layout.addView(iView);
frg_layout.addView(layout);
}
看看这样行不行!另一种方法是构建一个xml布局,我认为它通常更干净,但在编程上应该大致相同。将LayoutInflater与xml结合使用将带来解决方案
谢谢大家! 从LinearLayout.HORIZONTAL切换到VERTICAL,并为TextView的布局添加权重。就这样;)或者更好、更简单,创建一个仅包含线性布局和两个元素的布局文件,使用充气器加载此资源。然后你可以使用AndroidStudio的GUI设计。但是垂直意味着从上到下,我希望从左到右水平,或者这不是事实吗?我尝试了一下,得到了相同的结果,行与行之间没有空格…要将线性布局添加到的视图组是什么(frg_布局)?最好看看它是什么类型,它是如何定义的,它的布局参数是什么,等等。当r在android布局上创建设计时,使用xml是非常简单的设计方式,但是垂直是从上到下,我希望从左到右水平,或者这不是事实吗?我尝试了一下,我得到了相同的结果,行与行之间没有空格…哦,k更改布局参数match_parent,比如250dp,因为match_parent在布局上使用获取全部空间。现在红色框获取1/3的空间,绿色框获取2/3。。。!如果我读对了你的代码,应该是相反的?!?等一下,不,那不对,2表示它应该更大!现在我很困惑,这是不正确的。要求是绿色视图包装内容,红色视图占用剩余空间。红色视图的宽度0+权重1和绿色视图的宽度包装内容+权重0是正确的配置。还有别的东西打破了测量。那么,我不确定是什么问题。我通常用XML来做这些,所以我完全有可能把事情搞砸了。是的,我也很困惑@吉尔莫沙:你们都是对的