view.layout()失效问题

其实不是失效问题,只是当
摘要由CSDN通过智能技术生成
其实不是失效问题,只是当调用布局时,会重新调用view.layout(),所以前面设置的位置就不起作用了

情况1:

在设置View.layout()后,自己调用了view2.requestLayout();



情况2:

有些View的宽高改变,导致系统自动调用布局,例如textView的宽是wrap_content内容是“hello world” 在代码中调用textView.setText("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");




demo


布局文件

<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="0dp"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="fitXY"
        android:src="&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据您提供的代码,我注意到您没有在布局文件中声明 `PagerTabStrip`,但是您的错误信息中提到了 `PagerTabStrip` 类型。这可能是导致问题的原因。 如果您想在 `ViewPager` 中显示标签,您可以使用 `TabLayout` 组件来实现,而不是 `PagerTabStrip`。以下是修改后的代码示例: ```java import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widget.ViewPager; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import com.google.android.material.tabs.TabLayout; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); LayoutInflater lf = getLayoutInflater().from(this); View view1 = lf.inflate(R.layout.layout1, null); View view2 = lf.inflate(R.layout.layout2, null); View view3 = lf.inflate(R.layout.layout3, null); List<View> viewList = new ArrayList<>(); viewList.add(view1); viewList.add(view2); viewList.add(view3); ViewPager viewPager = findViewById(R.id.vp); MyAdapter myAdapter = new MyAdapter(viewList); viewPager.setAdapter(myAdapter); TabLayout tabLayout = findViewById(R.id.tab_layout); tabLayout.setupWithViewPager(viewPager); // 将 TabLayoutViewPager 绑定 } } ``` 请确保在布局文件中添加一个具有指定 id 的 `TabLayout` 组件,用于显示标签。然后使用 `setupWithViewPager()` 方法将 `TabLayout` 与 `ViewPager` 绑定起来。 希望这可以解决您的问题。如果您仍然遇到困难,请提供更多信息,我将尽力帮助您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值