我试图在点击按钮时动态添加图像按钮。当图像按钮的数量超过屏幕宽度时,我应该能够水平滚动。我试图实施Jess-Ander's TwoWayGridView但没有成功。我是初学者。如果错误太基础,请耐心等待。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Button" />
<com.jess.ui.TwoWayGridView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="#E8E8E8"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:cacheColorHint="#E8E8E8"
app:columnWidth="80dp"
app:rowHeight="80dp"
app:numColumns="auto_fit"
app:numRows="2"
app:verticalSpacing="16dp"
app:horizontalSpacing="16dp"
app:stretchMode="spacingWidthUniform"
app:scrollDirectionPortrait="vertical"
app:scrollDirectionLandscape="horizontal"
app:gravity="center">
<LinearLayout
android:id="@+id/linearLayout1"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.jess.ui.TwoWayGridView>
</LinearLayout>
这是代码:
package com.example.dynamic;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
LinearLayout linearLayout1;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_main);
linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout1);
}
public void onClick(View v){
ImageView image = new ImageView(MainActivity.this);
image.setBackgroundResource(R.drawable.ic_launcher);
linearLayout1.addView(image);
}
}
答案 0 :(得分:0)
如果您在使用xml中的值获取正确的间距时遇到问题,可以尝试查看以下教程:
http://spragucm.wordpress.com/2013/11/17/android-horizontal-and-vertical-gridview-tutorial/
我专门写了它,因为双向gridview项目不会均匀分布,并且它们不会填充行/列。我的教程中的示例代码允许您设置列和行号,并为您完成其他所有操作,以便子项填充行/列,并在项目之间添加一些填充。
示例代码演示了如何在任一方向使用双向gridview。
至于设置onClickListener ......你需要在gridview上设置setOnItemClickListener()。
答案 1 :(得分:0)
我一直在搞麻烦以实现双向网格视图,但最终以我的方式实现了它:
<ScrollView
android:id="@+id/mainscrolView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<HorizontalScrollView
android:id="@+id/rclv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TableLayout
android:id="@+id/table"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stretchColumns="*"
>
</TableLayout>
</HorizontalScrollView>
</ScrollView>
我以编程方式添加TableLayout的子级。喜欢:
TableLayout tv = findViewById(R.id.table);
tv.removeAllViewsInLayout();
TableRow tr = new TableRow(AndroidDatabaseManager.this);
tr.setLayoutParams(new LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT));
TextView b3 = new TextView(AndroidDatabaseManager.this);
b3.setText("Child");
tr.addView(b3);
tv.addView(tr);
final View vline = new View(AndroidDatabaseManager.this);
vline.setLayoutParams(new
TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT,2));
vline.setBackgroundColor(Color.BLUE);
tv.addView(vline);