我有一个水平方向的线性布局。 我想要做的是,我想在运行时添加图像,这些图像应该在线性布局中等间距。为了更好地理解,这是所需的输出。
但我一个接一个地把两张图片放在右边。
以下是代码段。
1)父布局(test.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/test"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
></LinearLayout>`
2)子布局(test_image.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/testTab"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
>
<ImageView
android:id="@+id/testImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
这是我在父布局中添加子项的活动
public class Test extends AppCompatActivity {
private LayoutInflater inflater;
@Override
protected void onCreate(Bundle savedInstanceStste)
{
super.onCreate(savedInstanceStste);
setContentView(R.layout.test);
inflater = (LayoutInflater) Test.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout layout = (LinearLayout)findViewById(R.id.test);
LinearLayout tab = provideTab(R.drawable.rottentomatoes);
LinearLayout tab1 = provideTab(R.drawable.rottentomatoes);
layout.addView(tab);
layout.addView(tab1);
}
public LinearLayout provideTab(int id)
{
LinearLayout cardView = (LinearLayout)inflater.inflate(R.layout.test_image,null);
ImageView imageView = (ImageView)cardView.findViewById(R.id.testImage);
imageView.setImageResource(id);
return cardView;
}}
我在这里缺少什么 (当我在父布局中添加子布局使用包含标签时,图像的间距相等) 提前致谢
答案 0 :(得分:1)
将provideTab
方法的第一行更改为
LinearLayout cardView = (LinearLayout)inflater.inflate(R.layout.test_image, layout, false);
其中layout
是父LinearLayout(从(LinearLayout)findViewById(R.id.test)
返回)。
第二个参数将为返回的层次结构的根提供一组LayoutParams值。阅读更多here。
答案 1 :(得分:1)
您的孩子的意见需要知道他们所在的位置,以确保权重正确。这就是为什么包括作品但你的代码没有。请尝试以下代码:
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.widget.ImageView;
import android.widget.LinearLayout;
import junit.framework.Test;
public class MainActivity extends AppCompatActivity {
private LayoutInflater inflater;
LinearLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layout = (LinearLayout) findViewById(R.id.test);
LinearLayout tab = provideTab(R.mipmap.ic_launcher_round);
LinearLayout tab1 = provideTab(R.mipmap.ic_launcher_round);
layout.addView(tab);
layout.addView(tab1);
}
public LinearLayout provideTab(int id) {
// Let the inflater know what the parent ViewGroup is (layout) but don't attach (false)
LinearLayout cardView = (LinearLayout) inflater.inflate(R.layout.test_image, layout, false);
ImageView imageView = (ImageView) cardView.findViewById(R.id.testImage);
imageView.setImageResource(id);
return cardView;
}
}