如何让我的 HorizontalScrollView 的子项在不重叠的情况下填满屏幕?
How do I get the children of my HorizontalScrollView to FILL THE SCREEN while still not overlapping each other?
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FDE0DFDF"
tools:context=".Main4Activity">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="100dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal">
<TextView
android:id="@+id/textView7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:fontFamily="@font/alfa_slab_one"
android:text="TextView"
android:textColor="@android:color/black"
android:textSize="33sp" />
<TextView
android:id="@+id/textView8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:fontFamily="@font/alfa_slab_one"
android:text="TextView"
android:textColor="@android:color/black"
android:textSize="33sp" />
<TextView
android:id="@+id/textView9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:fontFamily="@font/alfa_slab_one"
android:text="TextView"
android:textColor="@android:color/black"
android:textSize="33sp" />
</LinearLayout>
</HorizontalScrollView>
</androidx.constraintlayout.widget.ConstraintLayout
我想将这些 textView 水平放置到线性布局中,但我一次只希望 1 个填满屏幕...(之后我将创建一个按钮来滚动到所需的 textView。)
我曾尝试使用重力以及 layout_weight 来实现这一点 - 但没有成功。我以前从未使用过滚动视图,并且花了数小时在线研究,直到我决定 post 这个并希望得到一个有帮助的答案...谢谢!
使用全屏宽度以编程方式设置 HorizontalScrollView 元素宽度
在 HorizontalScrollView 的情况下,使用 match_parent 宽度将不起作用。
public class Main4Activity extends AppCompatActivity {
private LinearLayout linearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
linearLayout=findViewById(R.id.linear_layout);
int width=getScreenWidth(Main2Activity.this);
int childCount=linearLayout.getChildCount();
for (int i=0;i<childCount;i++){
TextView tv= (TextView ) linearLayout.getChildAt(i);
tv.setWidth(width);
}
}
public static int getScreenWidth(Context context) {
WindowManager wm= (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
return dm.widthPixels;
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FDE0DFDF"
tools:context=".Main4Activity">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="100dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal">
<TextView
android:id="@+id/textView7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:fontFamily="@font/alfa_slab_one"
android:text="TextView"
android:textColor="@android:color/black"
android:textSize="33sp" />
<TextView
android:id="@+id/textView8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:fontFamily="@font/alfa_slab_one"
android:text="TextView"
android:textColor="@android:color/black"
android:textSize="33sp" />
<TextView
android:id="@+id/textView9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:fontFamily="@font/alfa_slab_one"
android:text="TextView"
android:textColor="@android:color/black"
android:textSize="33sp" />
</LinearLayout>
</HorizontalScrollView>
</androidx.constraintlayout.widget.ConstraintLayout
我想将这些 textView 水平放置到线性布局中,但我一次只希望 1 个填满屏幕...(之后我将创建一个按钮来滚动到所需的 textView。) 我曾尝试使用重力以及 layout_weight 来实现这一点 - 但没有成功。我以前从未使用过滚动视图,并且花了数小时在线研究,直到我决定 post 这个并希望得到一个有帮助的答案...谢谢!
使用全屏宽度以编程方式设置 HorizontalScrollView 元素宽度
在 HorizontalScrollView 的情况下,使用 match_parent 宽度将不起作用。
public class Main4Activity extends AppCompatActivity {
private LinearLayout linearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main4);
linearLayout=findViewById(R.id.linear_layout);
int width=getScreenWidth(Main2Activity.this);
int childCount=linearLayout.getChildCount();
for (int i=0;i<childCount;i++){
TextView tv= (TextView ) linearLayout.getChildAt(i);
tv.setWidth(width);
}
}
public static int getScreenWidth(Context context) {
WindowManager wm= (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
return dm.widthPixels;
}
}