我已经将我的按钮设置为按Facebook,Instagram,Twitter和Reddit的顺序从上到下排列,但是它没有这样做,只显示了Facebook和Reddit,我不知道为什么。
我有一些按钮可以使用以下代码在创建活动时自动调整大小:

    public void getScreenRes() {
    DisplayMetrics display = this.getResources().getDisplayMetrics();
    int screenwidth = display.widthPixels;
    int screenheight = display.heightPixels;
    double buttonheight = screenwidth / 2.66666667;
    int buttonheightint= (int) Math.round(buttonheight);
    ImageButton fbLogin = (ImageButton) findViewById(R.id.facebookLogin);
    ViewGroup.LayoutParams fb = fbLogin.getLayoutParams();
    fb.width = screenwidth;
    fb.height = buttonheightint;
    fbLogin.setLayoutParams(fb);
    ImageButton instaLogin = (ImageButton) findViewById(R.id.instagramLogin);
    ViewGroup.LayoutParams insta = instaLogin.getLayoutParams();
    insta.width = screenwidth;
    insta.height = buttonheightint;
    instaLogin.setLayoutParams(insta);
    ImageButton twitLogin = (ImageButton) findViewById(R.id.twitterLogin);
    ViewGroup.LayoutParams twit = instaLogin.getLayoutParams();
    twit.width = screenwidth;
    twit.height = buttonheightint;
    twitLogin.setLayoutParams(twit);
    ImageButton redditLogin = (ImageButton) findViewById(R.id.redditLogin);
    ViewGroup.LayoutParams reddit = instaLogin.getLayoutParams();
    reddit.width = screenwidth;
    reddit.height = buttonheightint;
    redditLogin.setLayoutParams(reddit);
}


XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="16dp"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.eren.valour.FirstTimeLogin">


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/getStarted"
    android:id="@+id/getStartedText"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
   />
   <ImageButton
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_marginTop="100dp"
       android:background="@drawable/facebook"
       android:id="@+id/facebookLogin"
       android:onClick="facebookLogin"

       />
   <ImageButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/instagram"
        android:layout_below="@+id/facebookLogin"
        android:id="@+id/instagramLogin"
        android:onClick="instagramLogin"
        />
    <ImageButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/twitter"
        android:layout_below="@+id/instagramLogin"
        android:id="@+id/twitterLogin"
        android:onClick="twitterLogin"
        />

    <ImageButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/reddit"
        android:layout_below="@+id/twitterLogin"
        android:id="@+id/redditLogin"
        android:onClick="redditLogin"
        />




现在看起来像什么:

最佳答案

您需要获取相应的Layoutparams。

ViewGroup.LayoutParams reddit = instaLogin.getLayoutParams();


应该

ViewGroup.LayoutParams reddit = redditLogin.getLayoutParams();


与Twitter登录相同:

 ViewGroup.LayoutParams twit = twitLogin.getLayoutParams();


您的工作是采用instagram layoutparams并将其应用到3个按钮上,以便将它们全部放置在另一个按钮之上,因此仅显示最后一个。可能只是您的复制+粘贴错误,但这应该可以解决。

如果不能解决问题,则问题应该出在布局文件中。尝试使用LinearLayout或为您的RelativeLayout设置正确的属性。

关于java - ImageButton的排列不正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28275402/

10-10 18:35
查看更多