我有一个像下面的xml。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<LinearLayout
android:id="@+id/etMsisdn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/allView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/msisdn"
android:layout_marginRight="4dp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimaryDark"
android:hint="MSISDN"
android:inputType="numberDecimal"
/>
<ImageView
android:layout_width="60px"
android:layout_height="match_parent"
android:src="@drawable/scan"/>
</LinearLayout>
</LinearLayout>
............
Another View
............
</LinearLayout>
如何在水平LinearLayout(allView)中以编程方式添加EditText和ImageView,并在Vertical LinearLayout(etMsisdn)中添加allView,同时保持与xml中相同的属性。
EditText和ImageView r应该在msisdn edittext
下面答案 0 :(得分:0)
你需要获得对最外面的<LinearLayout
android:id="@+id/myContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
(你的布局中的第一个)的引用,所以最好的想法是给它一个Id:
LinearLayout containerLayout = (LinearLayout)findViewById(R.id.myContainer);
containerLayout.addView(yourView1);
containerLayout.addView(yourView2);
然后,您需要获得对此布局的引用并添加子视图,如下所示:
LayoutParams
要设置所需的布局对齐方式,您可以手动设置所需的EditText
(请参阅this answer in SO),也可以对布局进行充气并将其添加到当前布局,而不是两个单独的视图( ImageView
和import { InMemoryDbService, RequestInfo } from 'angular-in-memory-web-api';
import { ResponseOptions } from '@angular/http';
export class InMemoryDataService implements InMemoryDbService {
myData = 'any data';
createDb() {
let myData = this.myData;
return {myData};
}
protected responseInterceptor(res: ResponseOptions, ri: RequestInfo): ResponseOptions {
res.body = this.myData;
return res;
}
}
)(见this answer in SO)。
答案 1 :(得分:0)
这是你的解决方案
LinearLayout allview=(LinearLayout)findViewById(R.id.allView);
EditText edt=new EditText(this);
ImageView img=new ImageView(this);
allview.addView(edt);
allview.addView(img);
将此内容放入您的活动中
答案 2 :(得分:0)
您必须在布局对象上使用addView
方法。
但是,如果要在主布局中添加更多相同的“子布局”,最好使用“子部件”创建xml布局并以编程方式添加它。如果第二种情况是您需要提供的代码,请告诉我。
答案 3 :(得分:0)
查找LinerLayout
并添加观看次数:
LinearLayout root = (LinearLayout)findViewById(R.id.allView);
root.addView(someView);
并在您的视图中添加如下属性:
How to programmatically set textview-s and their properties?