我有一个视图布局 -
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="0px"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/items_header"
style="@style/Home.ListHeader" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/items_none"
android:visibility="gone"
style="@style/TextBlock"
android:paddingLeft="6px" />
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/items_list" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我想要做的是,在我的主要活动中使用这样的布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="0px"
android:id="@+id/item_wrapper">
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我想循环遍历我的数据模型,并将包含第一个布局的多个视图注入主布局.我知道我可以通过在代码中完全构建控件来实现这一点,但我想知道是否有一种方法可以动态构建视图,以便我可以继续使用布局而不是将所有内容都放在代码中.
在我的根布局中,我有
android:animateLayoutChanges="true"
Run Code Online (Sandbox Code Playgroud)
当我在View.GONE状态下使一些View可见时,它会产生完美的动画效果.布局完美展开.但是当我尝试删除视图时
setVisibility(View.GONE)
Run Code Online (Sandbox Code Playgroud)
它让它看起来很突然.视图立即消失,但布局更改动画从视图所在的位置开始,使视图看起来像消失两次.请帮帮我们!:)
有没有人知道如何执行或在运行时在android中进行活动布局有一个很好的参考?
这是我活动的代码.我确定我只是忽略了在这里做点什么:
package com.isi.sa;
import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;
public class SimpleAssessmentTest extends Activity {
LinearLayout layout;
TextView question;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
layout = new LinearLayout(this);
question = new TextView(this);
layout.setLayoutParams(new ViewGroup.LayoutParams(-1,-1));
layout.setBackgroundColor(R.color.blue);
question.setLayoutParams(new ViewGroup.LayoutParams(-1,-2));
question.setTextColor(R.color.green);
question.setTextSize(1,14);
question.setText("This is question1");
layout.addView(question);
setContentView(layout);
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我只是尝试使用单个文本视图添加线性布局(仅用于测试目的)但是,当活动开始时,我只得到一个带有我的应用名称标题栏的黑屏.
谢谢
我想在listview的每一行添加按钮.我创建了一个row.xml在我的布局文件夹中调用的XML文件,并在该文件中添加了两个textview和一个按钮.但是当添加一个按钮时,我无法单击listview的项目.我只能点击按钮.这是row.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/text11"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textColor="#000000"
/>
<TextView
android:id="@+id/text2"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:textColor="#000000"
/>
<Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我想在我的活动中引用textviews和button.请帮助我并提出一些想法.
我在单击按钮时添加布局。
private void addLayout() {
layout2 = LayoutInflater.from(mContext).inflate(R.layout.product_layout, mLinearLayout, false);
productAuto = (AutoCompleteTextView) layout2.findViewById(R.id.tv_product);
qtyEditText = (EditText) layout2.findViewById(R.id.prod_qty);
prodPriceEditText = (EditText)layout2.findViewById(R.id.prod_price);
prodSpecsEditText = (EditText)layout2.findViewById(R.id.prod_specs);
removeProduct = (Button)layout2.findViewById(R.id.btn_rmv);
mLinearLayout.addView(layout2);
setProd();
this.initListenersPrd(getActivity());
}
private void initListenersPrd(final Context context) {
productAuto.setOnItemClickListener((parent, view, position, id) -> {
String newName = parent.getItemAtPosition(position).toString();
ProductDetail productDetail = mProductManager.getProductByPrdName(newName);
if (productDetail != null) {
this.prodPriceEditText.setText(productDetail.getPrice());
this.prodSpecsEditText.setText(productDetail.getProductSpec());
}
});
removeProduct.setOnClickListener(v -> {
if (mLinearLayout.getChildCount()>0)
{
((LinearLayout)mLinearLayout.getParent()).removeView(mLinearLayout);
}
});}
Run Code Online (Sandbox Code Playgroud)
现在我想从应用程序中删除特定的产品表单,因此我已((LinearLayout)mLinearLayout.getParent()).removeView(mLinearLayout);单击“删除”按钮。但它删除了动态添加的整个布局。
图形用户界面
正如您在上图中看到的,我添加了 4-5 个产品布局,但是当我单击“删除”按钮时,我删除了所有布局。
更新1
我在主布局中添加了以下布局,然后以编程方式调用其中的产品布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" …Run Code Online (Sandbox Code Playgroud) 我需要一些有经验的人的帮助.我希望这很容易.我只是想表明新的视图(创建它没有 XML layouts上述主程序的观点).这是整合AdMob.com广告块:
我写了这样的代码:
AdView ad = new AdView(this);
ad.layout(10, 10, 100, 100);
ad.setVisibility(View.VISIBLE);
ad.bringToFront();
ad.requestFocus();
ad.invalidate();Run Code Online (Sandbox Code Playgroud)
如你所见 - 没有任何帮助,没有窗口可见
我做错了什么?谢谢!
PS我是在制作Activity的onCreate(Bundle),但我也在其他地方试过.
我做了一个viewstub充气并再次创建的。它使用的布局包括一个“删除”按钮,用于隐藏视图存根(或缩小它)。
当我创建一个新的viewstub我调用这个代码:
ViewStub eventStub = new ViewStub(this);
eventStub.setLayoutResource(R.layout.event_container);
eventContainerMain.addView(eventStub);
eventStub.inflate();
Run Code Online (Sandbox Code Playgroud)
问题是,在viewstub布局中,删除按钮是用新的viewstub. 那么如何让删除按钮隐藏viewstub里面的内容呢?
最重要的是,如何让其他方法只影响其内部的视图?
在 Android 中,我习惯于使用 XML 文件设置布局
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
Run Code Online (Sandbox Code Playgroud)
但是您也可以使用 Java 中的视图设置内容
// Create the text view
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
// Set the text view as the activity layout
setContentView(textView);
Run Code Online (Sandbox Code Playgroud)
这具有无法再使用布局文件的副作用。
无论如何,我可以以编程方式设置文本值并仍然使用 layout.xml 文件吗?